基于Docker+Jenkins的Android项⽬CICD流程搭建
⽂章⽬录
简介
Jenkins是⼀款开源 CI&CD 软件,⽤于⾃动化各种任务,包括构建、测试和部署软件。
Jenkins通过Docker部署运⾏时,Jenkins的容器环境不包含构建Android应⽤所需的⼯具(如Android SDK等)。但Jenkins⽀持在流⽔线的单个 Stage或整个流⽔线中使⽤Docker镜像作为执⾏环境,⽅便⽤户管理构建和测试环境。
本⽂档介绍在Docker运⾏Jenkins的环境下,⽤Jenkins构建Android项⽬的两种⽅式——Freestyle project构建任务和Pipeline构建任务。
操作环境
操作系统:CentOS Linux release 7.7.1908
Docker版本:19.03.5
Jenkins Docker镜像:jenkins/jenkins:lts
Jenkins版本:2.263.2
⼀、Jenkins⾃由风格项⽬(Freestyle project)
前置准备⼯作
由于Jenkins运⾏在Docker容器环境中,Android的编译环境也就是这个容器,所以需要这个环境有编译Android项⽬的⼯具——Android SDK和Gradle。
设置Android SDK
⾸先需要进⼊到Jenkins的容器环境中,操作命令:
docker exec -it fe8e26096760 /bin/bash
然后通过命令⾏安装Android SDK。以下为⼀个⽅便设置的脚本:
#!/bin/bash
mkdir /android-sdk &&cd /android-sdk
wget dl.google/android/repository/commandlinetools-linux-6858069_latest.zip
unzip -q commandlinetools-linux-6858069_latest.zip
mkdir latest &&mv cmdline-tools/* latest &&mv latest cmdline-tools/
yes| cmdline-tools/latest/bin/sdkmanager --licenses
#安装必要的构建⼯具
yes| cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3""platforms;android-29"
Android Gradle插件是通过环境变量来确定Android SDK的位置的,所以需要配置⼀个名为ANDROID_HOME或ANDROID_SDK_ROOT 的,其值为Android SDK所在的路径。设置⽅式:
“Manage Jenkins” -> “Configure System” -> “Global properties” -> 勾选上“Environment variables” -> 点击“Add”,输⼊环境变量名称和值,如图1所⽰:
docker重启容器命令
图1
输⼊完成后,滚动⾄页⾯底部,依次点击“Apply” -> “Save”来保存。
设置Gradle(可选)
“Manage Jenkins” -> “Global Tool Configuration” -> Gradle域点击“Gradle installations” -> ”Add Gradle“。输⼊⼀个名字,并勾选上“Install automatically”,在下⽅选择和代码⼯程中⼀致的Gradle版本。最后依次点击屏幕左下⾓“Apply” ->
“Save”保存设置。设置结果如图2所⽰:
图2
创建Freestyle project任务
1、 在Jenkins⾸页左上⾓点击“New Item”新建⼀个任务,进⼊图4页⾯。
图3
2、在该页⾯中,输⼊任务名称,类型选择Freestyle project,然后点击左下⾓“OK”进⼊配置页⾯。
图4
3、点击顶部“Source Code Management”选项卡,滚动到Source Code Management配置部分。类型选择“Git”;然后在Repositories域中,添加代码仓库地址和访问代码仓库的⽤户凭证;在Branches to build域中,设置⽤来编译的代码分⽀,如图5所⽰。
图5
4、(可选)点击顶部“Build Trigger”选项卡,滚动到Build Trigger配置部分,设置合适的触发器,⽐如配置远程http接⼝调⽤来触发。如不配置这部分,也可以通过⼿动来触发。
图6
5、点击顶部“Build”选项卡,滚动到Build配置部分。点击“Add build step”,在下拉列表中选择“Invoke Gradle script”,如图7所⽰。
图7
调⽤Gradle脚本的⽅式有两种,如图8所⽰;
Invoke Gradle;在“Gradle Version”点击展开下拉列表,选择要使⽤的Gradle版本。这⾥展⽰的选项就是我们前⾯在Jenkins系统管理页⾯“Global Tool Configuration”中设置的全局Gradle⼯具版本。
Use Gradle Wrapper;这种⽅式是使⽤源码⼯程中的Gradle配置,和在Android Studio中编译项⽬⼀样。
不管选择那种⽅式,都需要在下⽅的Tasks域中填写需要执⾏的Gradle构建任务和参数,例如:
clean assembleRelease --no-daemon
图8
为了使Jenkins的构建环境和开发编译时的环境尽量保持⼀致,避免Jenkins出现⼀些不必要的环境问题,推荐这⼀步选择Use Gradle Wrapper。
6、在最下⾯的“Post-build Actions”配置部分,点击“Add post-build action”,在下拉列表中选择“Archive the artifacts”,将指定的编译输出⽂件归档。便于以后我们在Jenkins任务的构建历史中查看某次构建的输出产物,如图9所⽰。
图9
这⾥我们在“Files to archive”域中填写:app/build/outputs/apk/release/*.apk,将编译出的所有APK⽂件进⾏归档,如图10所⽰。
图10
7、最后,依次点击页⾯左下⾓的“Apply” -> “Save”保存设置,⼀个Freestyle project类型的Jenkins任务就创建好了。
⼆、Jenkins流⽔线任务(Pipeline)
前置条件
需要先通过 “Manage Jenkins” -> “Manage Plugins” 页⾯安装 Docker、Docker Pipeline两个插件。
创建Pipeline任务
1、在Jenkins⾸页左上⾓点击“New Item”新建⼀个任务,进⼊图11所⽰页⾯。
2、在该页⾯中,输⼊任务名称,类型选择Pipeline,然后点击左下⾓“OK”进⼊配置页⾯。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。