前言
gradle、git、jdk環境配置比較簡單,主要說下Android SDK配置。Jenkins搭建完後還不能構建Android項目,因爲沒有Android開發環境,因此還需要配置Android開發環境。如果沒配ANDROID_HOME環境的話,構建時會找不到響應的task,如 Task ‘assembleRelease’ not found in project ‘:app’.
1、下載Android SDK
下載SDK的方式有兩種,一種是在宿主中下載然後拷貝到鏡像中;一種是直接在鏡像中下載。兩者區別不大,都是要通過sdkmanager。
方法一
在宿主中下載sdkmanager或者sdk,然後通過命令複製到jenkins鏡像中
docker cp <宿主filepath> :<鏡像filepath>
如:docker cp commandlinetools.zip jenkins:/home/downloads
方法二
進入jenkins鏡像中下載
1、進入鏡像bash環境
docker exec -i -t -u root <鏡像name> /bin/bash
2、下載sdkmanager
wget https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip
3、根據需要下載sdk
sh sdkmanager “platforms;android-28”
解壓sdkmanager後如果報錯:
Warning: Could not create settings
java.lang.IllegalArgumentException
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.(SdkManagerCliSettings.
...
- 創建ANDROID_HOME變量(如/usr/local/android)
- 把下載後的commandlinetools.zip解壓後得到tools文件夾,放到cmdline-tools(ANDROID_HOME的子目錄,如/usr/local/android/cmdline-tools)下
- 添加文件夾 $ANDROID_HOME/cmdline-tools/tools/bin到 PATH環境變量中(可選)
2、設置ANDROID_HOME環境變量
在 Manage Jenkins > Configure System 下配置全局變量,如
3、構建
設置源碼目錄,Credentials設置爲github賬號
添加構建任務,需要注意工程可能不能直接構建,則需要指定構建目錄Root Build script(如JsBridge是項目工程,但是app纔是可構建的項目,則 Root Build script設置爲 ${WORKSPACE}/app)
構建成功如圖所示
生成的apk文件在 ${WORKSPACE}/app/build/outputs/apk/xxx目錄下,如
3.1、帶參數構建
爲了應付Flavors的存在,可以自定義一些構建參數,如
相應的改變構建腳本
最後可視化構建操作爲
比如選擇Release、Flavors1,則構建任務爲assembleFlavors1Release。
還可以把Jenkins中配置的參數替換到Gradle 腳本的gradle.properties中。
Jenkins自帶的環境變量有 JOB_NAME、BRANCH_NAME等.
3.2、修改構建命名
設置格式
效果如圖
3.3、構建完成後操作
構建完成後給外部提供apk下載地址,然後發送通知或者做其他操作。
3.3.1、搭建tomcat服務
下載並啓動tomcat,在conf/server.xml文件下配置文件下載地址,在把conf/web.xml中的listings參數修改爲true,訪問地址爲:http:ip:port/apk/
<!-- server.xml -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 文件下載地址 -->
<Context docBase="/home/jenkins_downloads" path="/apk" reloadable="true" crossContext="true"/>
...
<!-- web.xml -->
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<!-- false 修改爲 true -->
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
3.3.2、通知構建者
構建完後把構建日誌、包等信息發送給構建者,可以通過郵件或者其他方式,這裏利用企業微信的羣機器人。
通過PostBuildScript Plugin這個插件可以再在構建成功、失敗後執行一些額外操作,比如shell腳本
腳本做的操作是先在tomcat下載目錄創建目標文件夾(通過構建時間、渠道、構建類型等信息),然後把生成的apk拷貝過去,就可以通過tomcat地址訪問了。
構建日誌地址爲:http://ip:port/job/${JOB_NAME}/${BUILD_NUMBER}/consoleText
下載地址爲:http://ip:port/apk/${JOB_NAME}/${PRODUCT_FLAVORS}/${BUILD_TYPE}/${BUILD_DATE}
用到的插件
Date Parameter
Build Name and Description Setter
PostBuildScript Plugin
參考:
Android Jenkins+Git+Gradle持續集成-實在太詳細
Android Command line tools sdkmanager always shows: Warning: Could not create settings