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

jenkins框架

1. 前言

Jenkins 是一个可扩展的持续集成引擎。
主要用于:
 持续、自动地构建/测试软件项目。
 监控一些定时执行的任务。
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代替。
正常安装界面:
正在自动安装第三方插件
如果网络或服务器卡,可能导致第三方插件自动安装失败,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 “your_email@gmail.com”
》ssh-keygen -t rsa -C “your_email@gmail.com”

之后,可以一直enter下去。也可以根据提示,将ssh存放到特定的文件中或者设置密码。
结果如下图所示
ssh密匙生成

2、将公匙保存到gitlab中

因为我是一直enter下去的,所以,我的公匙保存在id_rsa.pub当中。
因而打开id_rsa.pub,将其中的公匙保存到gitlab中。
ssh公匙

3、将私匙保存到jenkins

将私匙保存到jenkins的源码管理的Credentials的add jenkins 选择ssh username with private key,之后,在username填入你私匙文件的名字,即id_rsa,在private key中选择enter directly,填入id_rsa中的私匙值。最后点击add。
如下图所示:
ssh私匙存入jenkins

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

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

build poll scm
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.打包发布

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

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

我们是通过蒲公英进行发布的。蒲公英
成功注册后,会得到API
蒲公英API

7.邮件通知

在一般情况下,我们可以通过邮箱设置,当项目Build出现不稳定或失败时,就可通过邮件进行及时自动提醒给管理者。
我们是使用qq邮箱进行邮箱通知的。即QQ邮箱开启SMTP服务。
这里写图片描述
这里写图片描述
点击“系统管理”–> “系统设置”,滑倒邮件通知选项
这里写图片描述
增加“构建后操作步骤”–>”E-mail Notification”
邮箱设置

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值