Docker+Jenkins搭建Android持續集成環境(二)

前言

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/binPATH環境變量中(可選)

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_NAMEBRANCH_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

參考:

sdkmanager

Android Jenkins+Git+Gradle持續集成-實在太詳細

jenkins 內置變量

Android Command line tools sdkmanager always shows: Warning: Could not create settings

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章