前言
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