安卓持續集成docker+jenkins+gradle+android

1、安裝android-sdk
在linux服務器安裝sdk
java

wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgzlinux


tar -zxvf android-sdk_r24.4.1-linux.tgz
安裝須要的sdk版本android


cd android-sdk-linux/tools
./android list sdk -a     查看可見的sdk版本docker


./android update sdk -a -u -t [序號]         (-a 列出全部sdk版本       -u 無ui模式     -t 指定安裝版本)下載指定版本
2、生效環境變量
vim /etc/profile        #結尾加上 export ANDROID_HOME=「你的sdk路徑"
source /etc/profile
3、gradle編譯
cd /XXX/XXX  #切換到項目路徑
gradle clean assemblePRODebug —no-daemon  #編譯指定渠道的debug包shell

===============================================================vim

遇到的問題:服務器

  • jenkins是在docker容器裏的,須要把sdk gradle fireline 也裝到容器裏才能讀到;安裝到映射在實體機的目錄,以避免docker重啓後丟失。
  • 安裝sdk版本時注意,要和項目裏build.gradle文件要求的版本一致。
例如 compileSdkVersion 24
          buildToolsVersion '25.0.0'
  • jenkins是在容器裏,沒有/etc/profile文件,沒法經過修改文件生效環境變量。如果經過export命令生效環境變量,重啓jenkins就丟失。最後,經過把設置環境變量命令放到具體jenkins項目的shell腳本里執行。(該環境變量也僅在該shell窗口內有效)


例如:export ANDROID_HOME=/var/jenkins_home/android-sdk-linux
            app

export GRADLE_HOME=/var/jenkins_home/gradle-3.3
            jvm

export PATH=$PATH:/var/jenkins_home/gradle-3.3/bingradle

  • gradle編譯執行提示jvm內存不夠,百度又說是內存分配的問題,因而在gradle.properties里加上


org.gradle.daemon=true


org.gradle.parallel=true


org.gradle.jvmargs=-Xmx4096m


-XX:MaxPermSize=2048m


開始是成功了,幾回以後開始又失敗。加大分配內存同樣失敗,拖的jenkins容器重啓。


看了gradle官網,說持續集成環境不要使用線程保護。

嘗試把以上配置改爲:


org.gradle.daemon=false


org.gradle.parallel=true


#org.gradle.jvmargs=-Xmx4608m


#-XX:MaxPermSize=2048m


android.useDeprecatedNdk=true


提示Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)
懷疑配置文件沒生效,

把編譯命令加上—no-daemon 編譯成功。

================================================================

4、提取構建的apk
[Jenkins]—[構建後操做]—[Archive the artifacts]模塊。 
指定路徑文件便可
例如:XXX/build/outputs/apk/*.apk
5、集成火線靜態掃描
把火線官網的jar包下載下來,放到jenkins可讀到的目錄
[jenkins]— [構建]—[execute shell]里加上掃描命令便可。
-s指定掃描目錄,-n指定報告名稱, -r指定存放位置


例如:java  -jar XXXX/fireline.jar   -s=${WORKSPACE}/XXX   -n=android_test_${BUILD_NUMBER}   -r=${WORKSPACE}/report6、發佈掃描報告[Jenkins]—[構建後操做]—[Publish HTML reports]模塊。
指定報告所在路徑便可。⚠️ 因爲火線報告使用了JavaScript,這裏須要設置jenkins容許腳本執行(allow-scripts)。解決辦法以下:
【jenkins】->【系統管理】->【腳本命令行】,在文本框中輸入:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
而後點擊運行,從新執行一下build任務便可。

相關文章
相關標籤/搜索