国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用 DaoCloud 與 FIR.im 為 CodingAndroid 項目開啟持續(xù)集成的嘗試

renweihub / 1809人閱讀

摘要:所以一直沒能把持續(xù)集成搞起來。后來接觸到,所以嘗試了一下把持續(xù)集成搭建在上了,通過下面這幾步就可以實現(xiàn)項目有新的提交后自己編譯發(fā)布測試包到上了。

由于本人精力有限,如果內容有更新可能無法及時更新其他渠道的內容,請移步簡書 查看文章

由于之前公司項目一直迭代速度很快,幾乎隔幾天就需要發(fā)布測試包給同事們進行測試,所以希望把打包Apk這個工作交給機器來做,然后就嘗試了幾種持續(xù)集成的方案,最常見的是Jenkins,Travis,但Jenkins配置略為復雜,Travis雖然很簡單,但畢竟不支持Coding,而且費用也比較高。所以一直沒能把持續(xù)集成搞起來。

后來接觸到DaoCloudCI,所以嘗試了一下把持續(xù)集成搭建在 DaoCloud 上了,通過下面這幾步就可以實現(xiàn)CodingAndroid項目有新的提交后自己編譯發(fā)布測試包到 FIR.im 上了。

讓我們開始吧,文章發(fā)布后很多人說步驟過于復雜,其實大家僅需要使用CI功能,則可以跳過第一步,直接使用我已經編譯好的 ci-android 鏡像

1. 創(chuàng)建一個基于?Docker?的?Android?編譯環(huán)境鏡像

P.S. 該項目已經托管在GitHub上,點此查看

編寫 Dockerfile 文件 添加軟件源并更新軟件列表

下載文件使用到了 wget 命令,其他為安裝 Android SDK 需要依賴的一些包

在 Ubuntu 上安裝 Android SDK 的官方文檔:
http://developer.android.com/intl/zh-cn/sdk/installing/index.html?pkg=tools

RUN dpkg --add-architecture i386                                    && 
    apt-get update                                                  && 
    apt-get install -y wget                                         && 
    apt-get install -y libncurses5:i386 libstdc++6:i386 zlib1g:i386 && 
    apt-get clean
安裝 JDK

鏡像包含了 Java7 和 Java8,目的是為了可以支持 Retrolambda,Android Studio 上要支持 Lambda 表達式請查看 Gradle Retrolambda Plugin 項目

# 安裝 Java 7
RUN wget -q --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz && 
    tar -xzf jdk-7u79-linux-x64.tar.gz -C /usr/local && 
    rm jdk-7u79-linux-x64.tar.gz && 
# 安裝 Java 8
    wget -q --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz && 
    tar -xzf jdk-8u66-linux-x64.tar.gz -C /usr/local && 
    rm jdk-8u66-linux-x64.tar.gz

# 配置 Java 環(huán)境變量
ENV JAVA7_HOME /usr/local/jdk1.7.0_79
ENV JAVA8_HOME /usr/local/jdk1.8.0_66
ENV JAVA_HOME /usr/local/jdk1.7.0_79
ENV PATH $PATH:$JAVA_HOME/bin
安裝 Android SDK
# 安裝 Android SDK
RUN wget -q http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz && 
    tar -xzf android-sdk_r24.4.1-linux.tgz -C /usr/local              && 
    rm android-sdk_r24.4.1-linux.tgz

# 配置 Android SDK 環(huán)境變量
ENV ANDROID_HOME /usr/local/android-sdk-linux
ENV PATH $PATH:$ANDROID_HOME/tools
ENV PATH $PATH:$ANDROID_HOME/platform-tools
ENV PATH $PATH:$ANDROID_HOME/build-tools/23.0.2

RUN echo yes | android update sdk --no-ui --all --filter platform-tools             && 
    echo yes | android update sdk --no-ui --all --filter build-tools-23.0.2         && 
    echo yes | android update sdk --no-ui --all --filter android-23                 && 
    echo yes | android update sdk --no-ui --all --filter android-22                 && 
    echo yes | android update sdk --no-ui --all --filter extra-android-m2repository && 
    echo yes | android update sdk --no-ui --all --filter extra-google-m2repository  && 
    echo yes | android update sdk --no-ui --all --filter extra-android-support
安裝 Android NDK

安裝NDK會導致編譯過程漫長并且鏡像無比的大,所以只是提供了安裝的方法

# # 安裝 Android NDK

# RUN wget -q http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin && 
#     chmod a+x android-ndk-r10e-linux-x86_64.bin                                && 
#     ./android-ndk-r10e-linux-x86_64.bin -o/usr/local                           && 
#     rm android-ndk-r10e-linux-x86_64.bin

# # 配置 Android NDK 環(huán)境變量
# ENV NDK_HOME /usr/local/android-ndk-r10e
# ENV PATH $PATH:$NDK_HOME
利用 Travis CI 測試編譯 Dockerfile

為了測試 Dockerfile 是否編寫正確,我使用了Travis CI的持續(xù)集成服務,目的是在我每次提交代碼時幫我編譯 Docker 鏡像,由于國內的網絡環(huán)境問題,所以像通過 wget 下載 Android SDK 這種工作幾乎是無法完成的,使用 docker build 命令幾乎也是無法完成的,所以這個工作交給國外的 CI 是最合適不過了。

添加 .travis.yml 文件到項目根目錄

sudo: required

services:
  - docker

before_install:
  - docker build -t lijy91/ci-android .

script:
  - docker ps -a

以下是代碼提交后TravisCI編譯狀態(tài)

查看TravisCI的編譯狀態(tài):https://travis-ci.org/lijy91/ci-android

發(fā)布 lijy91/ci-android 到 DaoCloud 鏡像倉庫

注冊 DaoCloud 并登錄

進入控制臺 代碼構建 頁面

創(chuàng)建新項目,填寫項目名稱,選擇Git倉庫

這幾步完成后臺會開啟首次構建,以后每次代碼提交后就會自動開始新的構建

P.S. 構建完成后把鏡像發(fā)布到公共倉庫,daocloud.io/lijy91/ci-android 是本人發(fā)布到公共倉庫的鏡像,大家可以直接使用

2. 為 CodingAndroid 項目開啟持續(xù)集成做準備 Fork CodingAndroid 項目

Fork CodingAndroid項目并克隆到本地

官方:https://coding.net/u/coding/p/Coding-Android/git
Fork后:https://coding.net/u/lijy91/p/Coding-Android/git
順便吐槽一下 Coding 的URL路由真的好丑~

$ git clone git@git.coding.net:lijy91/Coding-Android.git
確保編譯工具版本與 ci-android 安裝的保持一致

build-tools-23.0.2

android-23

項目里用的就是這兩個版本,下一步

配置并測試 FIR Gradle 插件

請閱讀 FIR.im 官方關于使用 Gradle 插件的文章:[使用 Gradle Plugin 發(fā)布應用到 fir.im
](http://blog.fir.im/gradle/)

/build.gradle 部分內容已省略

buildscript {
    repositories {
        maven { url "http://maven.bughd.com/public" }
        ...
    }
    dependencies {
        ...
        classpath "im.fir:gradle-fir-publisher:1.0.2"
        ...
    }
}

app/build.gradle 部分內容已省略

...
apply plugin: "im.fir.plugin.gradle"

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    ...

    // 創(chuàng)建一個證書,并配置
    signingConfigs {
        release {
            storeFile file("app_release.jks")
            storePassword "n7yJipUzL3XQ"
            keyAlias "coding"
            keyPassword "n7yJipUzL3XQ"
        }
    }

    buildTypes {
        release {
            ...
            //需要使用正式證書簽名,才能發(fā)布到fir.im
            signingConfig signingConfigs.release
        }
    }
    ...
}

...

fir {
    apiToken "cb570ab95d2802a11387b02a65d01a42"
}

測試驗證一下修改是否正確,?請使用 Gradle?Wrapper

./gradlew publishApkRelease


幾分鐘后,一個新鮮滾熱辣的包已經被發(fā)布到FIR.im上了,鏈接在此 http://fir.im/t5d6

添加 daocloud.yml 文件

這里再重復說一次,本人已經將上方的 Android 環(huán)境鏡像發(fā)布到DaoCloud 公共倉庫中,大家可以直接使用 daocloud.io/lijy91/ci-android 這個鏡像

image: daocloud.io/lijy91/ci-android

script:
    - ./gradlew publishApkRelease

關于如何編寫 daocloud.yml,請閱讀DaoCloud官方文檔:daocloud.yml 的結構和寫法

提交代碼

測試成后提交代碼,準備下一步

$ git add .
$ git commit -m "DaoCloudCI支持"
$ git push -u origin master

不過不太順利的是今天Coding有更新,導致無法 Push 代碼,估計是Merge GitCafe 時產生的 Bug!不過Coding迅速修復了,給個贊~

Coding.net Tips : [Project not found!]
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
3. 開啟持續(xù)集成(DaoCloudCI) 創(chuàng)建項目

驗證持續(xù)集成是否開啟成功

隨意修改點內容push 上去即可~~~

稍等幾分鐘,如果代碼沒有問題,新的安裝包將會被發(fā)布到 http://fir.im/t5d6 ~~

Enjoy~

關于我

剛離職幾天,這段時間在整理近兩年的工作經驗,把自己一些經驗心得分享給大家,希望不斷的優(yōu)化開發(fā)體驗,改進交付方式,將更多的時間花在學習以及生活上,也希望找一份為開發(fā)者服務的工作,坐標深圳。

4年工作經驗,近2年從事Android應用開發(fā),熟悉從項目啟動到上線的完整流程,對產品及體驗有一定的理解,對Node.js及前端有著強烈的興趣,希望可以為優(yōu)化開發(fā)體驗改進交付軟件交付方式出一點微薄之力~

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26540.html

相關文章

  • fir.im weekly - 「 持續(xù)集成 」實踐教程合集

    摘要:來這里看看的工程師如何進行持續(xù)集成與持續(xù)部署。主要介紹了豆瓣移動持續(xù)集成和測試相關實踐,用工具化自動化社會化測試來解決遇到的問題,將打包發(fā)布環(huán)節(jié)自動化。這期的持續(xù)集成實踐分享就到這里。 我們常看到許多團隊和開發(fā)者分享他們的持續(xù)集成實踐經驗,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等項目搭建持續(xù)集成的實踐,以及一些國內外公司的內部持續(xù)集成...

    A Loity 評論0 收藏0

發(fā)表評論

0條評論

renweihub

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<