欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android+Jenkins——从持续集成到测试发布

程序员文章站 2022-07-12 18:40:03
...

Android+Jenkins——从持续集成到测试发布

1. 前言

Jenkins 是一个可扩展的持续集成引擎。
主要用于:
 持续、自动地构建/测试软件项目。
 监控一些定时执行的任务。
Android+Jenkins——从持续集成到测试发布
Jenkins 的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。
为解决程序代码提交质量低,提交内容导致原有系统的bug,按时或按需自动编译版本,自动进行自动化测试。即
1.定时拉取代码并编译
2.静态代码分析
3.定时打包发布测试版
4.自定义额外的操作,如跑单元测试等
5.出错提醒

2. 安装Jenkins及第三方插件

安装Jenkins:
对于Windows:
从官方下载最新的Jenkins。地址:Jenkins官网
如果不是很熟,按默认一步一步安装,即可。
对于Linux:
可以参看How To Install Jenkins on Ubuntu 16.04-2017年
其中,在启动Jenkins的命令sudo systemctl start jenkins可能因未安装systemctl而无法运行,可以使用service jenkins start代替。
正常安装界面:
Android+Jenkins——从持续集成到测试发布
如果网络或服务器卡,可能导致第三方插件自动安装失败,reply一下就好。
值得注意的是
(1)Jenkins的服务器地址会默认为localhost:8080.
如果需要更改8080端口的话,可以在Jenkins的安装目录(即jenkins.war所在目录)下,运行“java -jar jenkins.war –ajp13Port=-1 –httpPort=8089”命令。
(2)在第一次进入Jenkins时,要将Jenkins安装目录下的initialAdminPassword中的随机数串填入,才能进入Jenkins。

3. 配置git,实现Jenkins和gitlab的持续性集成

在一开始,如果我们选择的是“Install suggested plugins”,即推荐安装。那么就可以直接进行配置。
如果本地未安装git的话,可以在git官网上下载最新的git。
总的来说,可以分两步。一、在git上创建ssh私匙和公匙。二、分别将公匙保存到gitlab中,将私匙保存到Jenkins中。
因为在源码管理中的Credentials认证时,使用用户名和密码来配置一般是不通过的。
所以,使用ssh密匙对的方式进行配置。

1、在客户机上生成ssh密匙。

打开git bash:

》git config --global user.name “your name”      
》git config --global user.email “aaa@qq.com.com”
》ssh-****** -t rsa -C “aaa@qq.com.com”

之后,可以一直enter下去。也可以根据提示,将ssh存放到特定的文件中或者设置密码。
结果如下图所示
Android+Jenkins——从持续集成到测试发布

2、将公匙保存到gitlab中

因为我是一直enter下去的,所以,我的公匙保存在id_rsa.pub当中。
因而打开id_rsa.pub,将其中的公匙保存到gitlab中。
Android+Jenkins——从持续集成到测试发布

3、将私匙保存到jenkins

将私匙保存到jenkins的源码管理的Credentials的add jenkins 选择ssh username with private key,之后,在username填入你私匙文件的名字,即id_rsa,在private key中选择enter directly,填入id_rsa中的私匙值。最后点击add。
如下图所示:
Android+Jenkins——从持续集成到测试发布

值得注意的是在jenkins中的Credentials认证的add jenkins的username**必须**填写你ssh文件名。
以下是一些我们遇到的一些jenkins连接gitlab中的问题及解决方式。
1、无法通过ssh连接到gitlab,连接超时。
Android+Jenkins——从持续集成到测试发布
我遇到问题的原因有以下几点:
1、ssh密匙放置错误。ssh私匙没有成功地放入jenkins之中,Credentials证书中的username与ssh存放的文件名不符。
2、gitlab服务器或网络出了问题。
Android+Jenkins——从持续集成到测试发布
2、ssh密匙失败,无访问权限
Android+Jenkins——从持续集成到测试发布
解决方式:重新生成ssh密匙,添加到gitlab和jenkins之中,选定。

4. 实现持续性集成的准备——构建触发器定期构造检查、

Android+Jenkins——从持续集成到测试发布
Build periodically(定期构造)和POLL SCM(定时检查源码变更)
Build periodically:不关心源码是否发生变化,按照一定的周期进行项目构建
Build when a change is pushed to GItHub:只要GitHub上面源码一更新就立即进行构建
Poll SCM:定时检查源码变更,如果有更新就下载最新的代码下来,然后执行构建
以下为具体的设置
•MINUTE HOUR DOM MONTH DOW
•第一个参数代表的是分钟 minute,取值 0~59;
•第二个参数代表的是小时 hour,取值 0~23;
•第三个参数代表的是天 day,取值 1~31;
•第四个参数代表的是月 month,取值 1~12;
•最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天
•特殊格式;
•* 指所有有效的值
•M-N指定值的范围
•M-N/ X或*/ X是指以X为步长,指定的区域或整个有效范围区间的值
•A,B,…,Z列举多个值
•eg.H/15 * * * * 每十五分钟执行一次
• H(0-29)/10 * * * * 每小时的0-29分内每隔十分钟执行一次
• H 9-16/2 * * 1-5 每个工作日的9-16点内每隔两小时执行一次
• H H 1,15 1-11 * 1-11月的每月1号和15号各执行一次

5. 实现测试

6.打包发布

Android+Jenkins——从持续集成到测试发布
参考文档:蒲公英上使用Jenkins实现持续集成android
在gradle上进行构建工作,在Tasks上输入clean assembleRelease -debug,打出正式包,并检查代码。
通过shell脚本执行post上传指令对项目的apk进行上传。
在Command上,根据文件的位置和蒲公英上的具体数值填写如下信息

curl -F "aaa@qq.com/tmp/example.apk" -F "uKey=" -F "_api_key=" https://qiniu-storage.pgyer.com/apiv1/app/upload

我们是通过蒲公英进行发布的。蒲公英
成功注册后,会得到API
Android+Jenkins——从持续集成到测试发布

7.邮件通知

在一般情况下,我们可以通过邮箱设置,当项目Build出现不稳定或失败时,就可通过邮件进行及时自动提醒给管理者。
我们是使用qq邮箱进行邮箱通知的。即QQ邮箱开启SMTP服务。
Android+Jenkins——从持续集成到测试发布
Android+Jenkins——从持续集成到测试发布
点击“系统管理”–> “系统设置”,滑倒邮件通知选项
Android+Jenkins——从持续集成到测试发布
增加“构建后操作步骤”–>”E-mail Notification”
Android+Jenkins——从持续集成到测试发布