一、前言
我们开发好功能之后,需要编译打包,打包好的可执行程序需要交给测试人员进行测试,但是往往我们的项目大了之后,编译整个项目,打包的过程的时间相对比较长,这个时候如果是在开发人员的电脑上进行代码的编译打包,这段时间,开发人员就没法进行编码的工作了,这个如果我们需要频繁的打包情况下,效率就会更低了;
所以很多公司团队都会采用在服务器配置自动构建,打包的过程,而不再是在开发人员的电脑上手动构建,编译,打包;甚至是测试人员也可以根据代码的版本,自己随时触发构建打包,然后进行测试;
而Jenkins就是一款非常强大的开源的持续集成工具或者说是平台,我们可以在Jenkins配置我们的自动化构建,编译打包过程;
这篇文章,我们就详细介绍一下,如何在Ubuntu系统上使用Jenkins配置自动化构建,编译,打包Android APK
二、Ubuntu上使用Jenkins自动化打包Android APK环境搭建
1.JDK下载和环境配置
(1)下载JDK
我这里是在JDK官网https://www.oracle.com/java/technologies/downloads/,下载的Java 8 的linux版本的JDK, 因为我的Android项目使用的JDK版本就是Java 8的版本;
下载之后解压到一个目录下即可
(2)配置JDK环境变量
打开环境变量配置文件
sudo gedit ~/.bashrc
在环境变量文件末尾添加配置
#配置jdk的环境变量
export JAVA_HOME=/home/maqing/jdk/jdk-linux-x64/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
注意这里JAVA_HOME的路径就是你的JDK的根目录
使环境变量配置生效
source ~/.bashrc
查看配置是否成功
java -version
使用java -version 命令,如果成功显示了JDK的版本,则说明JDK环境变量配置成功
2.安装Git
由于我们是使用Git进行项目的版本控制和管理的,所以这里需要下载Git
使用如下命令安装Git
sudo apt-get install git
查看git是否安装成功
git --version
使用git --version,如果成功显示了git的版本,则说明git安装成功
3.Gradle的下载和环境变量配置
我们知道现在Android项目的构建是通过gradle工具进行构建的,所以需要下载gradle,这里的gradle的版本和你项目中使用的gradle版本一致即可
(1)下载gradke
我这里是在Gradle的官网https://gradle.org/releases/,下载的gradle-6.7.1-all.zip,因为我的Android项目中使用的是gradle-6.7.1
下载之后解压到某个目录即可
(2)配置Gradle环境变量
打开配置文件
sudo gedit ~/ .bashrc
在环境变量文件末尾添加配置
#配置Gradle环境变量
export GRADLE_HOME=/home/maqing/gradle/gradle-6.7.1-all/gradle-6.7.1
export PATH=$GRADLE_HOME/bin:$PATH
这里的GRADLE_HOME的路径就是你的gradle的根目录
使得配置生效
source ~/.bashrc
查看配置是否成功
gradle -version
使用gradle -version 命令,如果成功显示了Gradle的版本,则说明Gradle环境变量配置成功
4.Android SDK下载和环境变量配置
(1)下载Android SDK下载工具sdkmanager
去Android开发者官网https://developer.android.google.cn/studio,找打Command line tools 下载地方,下载SDKManager这个Android SDK下载管理工具,我这里下载的是commandlinetools-linux-7583922_latest.zip ,下载之后解压缩到某个目录
然后我们在命令行中进入到它解压出来的bin目录,使用如下命令查看最新的stable版本
./sdkmanager --list --channel=0
使用该命令报错
Error: Could not determine SDK root.
Error: Either specify it explicitly with --sdk_root= or move this package into its expected location: /cmdline-tools/latest/
报错了,无法找到sdk根目录,提示说有两种解决办法:一是用–sdk_root指定路径,二是把文件夹移动到指定路径。
到上层目录,commandlinetools根目录 ,执行如下命令
mkdir latest
mv bin/ lib/ NOTICE.txt source.properties -t latest/
然后到latest/bin目录
cd latest/bin/
./sdkmanager --list --channel=0
执行查看命令,不再报错,可以正常查看stable版本
(2) 安装Android SDK,并配置环境变量
我的Android项目使用的是compileSdkVersion 30,buildToolsVersion “30.0.3” ,所以安装对应的platforms
使用如下命令安装对应版本的 Android SDK
./sdkmanager "build-tools;30.0.3" "platforms;android-30"
打开配置文件
sudo gedit ~/ .bashrc
在环境变量文件末尾添加配置
#配置Android SDK环境变量
export ANDROID_HOME=/home/maqing/android-sdk-tool/commandlinetools-linux-7583922_latest
export ATH=$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH
使配置生效
source ~/.bashrc
5.安装Jenkins
可以根据Jenkins官网https://pkg.jenkins.io/debian-stable/文档进行安装
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
sudo ln -s /home/maqing/jdk/jdk-linux-x64/jdk1.8.0_131/bin/java /usr/bin
默认端口号为8080,修改端口号为8081
sudo gedit /etc/default/jenkins
启动Jenkins Service
sudo service jenkins start
打开浏览器,输入 http://localhost/8081/ 进入Jenkins的网页,如果正常进入Jenkins网页,说明
Jenkins安装成功
网页主页,需要输入Administrator password ,这个密码网页上会提示你在
/var/lib/jenkins/secrets/initialAdminPassword里面可以查看
我们可以在命令行中 cat /var/lib/jenkins/secrets/initialAdminPassword 查看
cat /var/lib/jenkins/secrets/initialAdminPassword
然后在网页中输入密码,然后会进入下一步的配置
(1)安装建议的一些插件
在上一步安装Jenkins的时候,我们进入Jenkins主页,输入密码之后,可以选择Install suggested plugins,安装建议的一些插件
(2) 安装完插件后然后会进入创建Admin用户的界面
输入username,password,full name,E-mail address,然后Jenkins的基本配置项暂时完成了,会显示Jenkins is Ready,点击 start using jenkins
6.Jenkins 配置Android项目构建,编译,打包
1.插件配置
点击 Manage Jenkins,查看Available 可获得的插件
由于之前初次进入Jenkins主页的时候 Install suggested plugins,已经安装了git,gradle,jdk
这些插件了,所以这一步就不需要再安装Jenkins 的插件了
2.全局环境配置
点击Global Tool Configuration,进行JDK,Git,Gradle相关配置
(1)JDK配置
JDK Name :JDK 1.8 //这个可以随意写
JAVA_HOME: /home/maqing/jdk/jdk-linux-x64/jdk1.8.0_131/bin //你的JDK目录,不知道可以通过which java命令查看,要到bin目录
Git name: Git 2.25.1 //这个可以随意写
Path to Git executable: /usr/bin/git //Git的安装目录,不知道可以通过which git 命令查看
Gradle name :Gradle 6.7.1 //这个可以随意写
GRADLE_HOME:/home/maqing/gradle/gradle-6.7.1-all/gradle-6.7.1 //gradle的目录
3.Android SDK配置
Manager Jenkins–>Configure System,然后找到Global properties–>Environment variables
添加Android SDK配置
Name: ANDROID_HOME
Value: /home/maqing/android-sdk-tool/commandlinetools-linux-7583922_latest
至此Jenkins上Android项目构建的一些基本配置就配置好了,接下来就需要在Jenkins创建项目去完成自动构建,编译和打包过程
5.Jenkins上创建项目
1.创建项目
在jenkins主页点击 New Item
输入项目名字(Enter an item name)
选择 Freestyle project,点击OK创建
2.项目配置
(1)Source Code Managemanet 配置
这里就是配置我们的项目关联的git仓库地址
选择Git
Repositories
Repository URL:https://gitee.com/maqing/new-dreame-delivery-robot.git
Credentials Add添加一个,输入git仓库对应的用户名和密码
然后选择该 Credentials
Branch Specifier
如果是分支:*/branch_name 也可以是tag: refs/tags/tag_name
选择 Invoke Gradle script
Gradle Version :Gradle 6.7.1
Tasks: //构建任务
clean //清除一下
assemble //打包
然后Save 保存所有配置
6.打包APK
在Jenkins主页中 ,点击MyViews,可以看到当前创建的项目 DreameDeliveryRobot
点击该项目进去,在左侧可以点击 Build with parameters 开始构建打包
点击之后,在Build History就能看到当前的构建进度,以及之前的构建历史
点击当前的构建任务或者之前的构建历史,左侧有Console Output可以看到,该次构建的过程
输出日志
构建打包成功,在Workspace会有对应的项目代码目录,
并且在app/build/output/apk/release 中会有打好的包
构建历史以及打包好的包