Jinkens+踩坑纪录
Jenkins
Jenkins的通俗概念
jenkins是一个广泛用于持续构建的可视化web工具,说白了就是各种项目的”自动化”编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket。
安装教程
这里需要注意的是:
- 教程里的如下这句不能删除,而是把ip地址改为广播地址,即\
–httpListenAddress=0.0.0.0\
如果要其他机器也可以访问,把plist里的\
–httpListenAddress=127.0.0.1\ 删掉即可
- 要用命令行来安装,安装包类的安装方法会有意想不到的坑,故不推荐
主要坑介绍
系统管理>系统设置>全局属性
这里要配置sdk,键:ANDROID_HOME,值:sdk路径
未配置该项时,集成编译过程中会报出未配置ANDROID_HOME环境变量的错,容易误导去配置电脑的系统环境变量
系统管理>系统设置>Jenkins Location
Jenkins URL:此项是可选的,指定安装Jenkins的HTTP地址,例如http://yourhost.yourdomain/jenkins/. 这个值用来在邮件中生产Jenkins链接.此项是有必要的,因为Jenkins无法探测到自己的URL地址.
系统管理>系统设置>邮件通知
这里时配置邮件发送服务器,经百般尝试,公司的企业邮箱,并不能顺利生效,推测原因在于outlook邮箱只能用POP和IMAP,而不支持SMTP。若使用163邮箱,可以顺利生效,但经常发送jenkins的邮件,过一大段时间以后,163会以为你老发垃圾邮件,就不让你发了
系统管理>插件管理
这里就说几个用到的插件
- Git plugin:必装,拉代码用
- Gradle plugin:必装,编译android项目
- HTML Publisher plugin:该插件是为了在jenkins web页面上方便的查看appium产生测试用例报告用
- fir-plugin:该插件需要手动安装,自动发布到fir
系统管理>Global Tool Configuration
Android持续集成必备环境配置
- JDK
- Git
- Gradle
系统管理>脚本命令行
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; style-src 'unsafe-inline' *;script-src 'unsafe-inline' *;")
项目>配置
- General:这里是基本的无关痛痒的配置
- 源码管理:这里主要配置下git地址,账户密码,以及要构建的分支、或Tag
构建触发器:这里重点说两个配置
Build periodically:定时触发构建
Poll SCM:定时检查是否有新代码,有则构建
参数:
根据开发需要,假设每一个小时我们需要重新构建一次。选择 Build periodically,在 Schedule 中填写 0 * * * *。第一个参数代表的是分钟 minute,取值 0~59;第二个参数代表的是小时 hour,取值 0~23;第三个参数代表的是天 day,取值 1~31;第四个参数代表的是月 month,取值 1~12;最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。所以 0 * * * * 表示的就是每个小时的第 0 分钟执行一次构建。
构建>Invoke Gradle script:
Gradle Version:这里选第五点配置的Gradle版本
Tasks:这里填写常见的gradle 命令,如:clean assemble_guanghetvDebug –stacktrace –debug
构建>Execute shell:这里配置appium的测试脚本,如:python script/py261.py,脚本放在了工程目录下的script文件夹下
构建后操作>Archive the artifacts:这个配置YCMath/build/outputs/\/*.apk,用于保存生成的apk
构建后操作>Publish HTML reports:
HTML directory to archive:script/result,测试报告输出的位置
Index page[s]:index.html,这里要在script/result文件夹中手动添加一个index.html文件,内容如下,这样在jenkins web中可以快捷链接到测试报告列表
<html> <body> <script>document.location = '*'</script> </body> </html>
构建后操作>E-mail Notifation,发送构建邮件
构建后操作>Upload to fir.im,自动发布到fir
ExInclude IPA/APK File Name:这里过滤的是不要上传的文件
**/*unaligned*.apk,**/*unsigned*.apk