Jenkins Android自动打包平台配置
目标:1. 自动打包;2. 自动上传;3. 友好下载
一、Jenkins自动打包配置
目标:1. 自动打包;2. 自动上传;3. 友好下载
1. Jenkins简介
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。
减少重复劳动,减少人工成本。
- 持续、自动地构建/测试软件项目;
- 监控一些定时执行的任务;
2. Jenkins配置
- 添加git plugin和 role插件
- 设置人员权限,根据角色授权
- 启动访问http://ip/8080即可,见下`3.1 开机自启脚本`
- 添加git项目,配置脚本,见下
3.2 项目打包脚本
和3.3 Apk上传脚本
3. 自动化脚本
3.1 开机自启脚本
- jenkins.sh
#! /bin/sh |
- jenkins_start.sh
#!/bin/bash |
- Mac上开机自启
sudo defaults write com.apple.loginwindow LoginHook /path/to/script |
3.2 自动化打包和上传
项目打包脚本
目前是直接运行Gradle命令,可脚本完成复杂需求
./gradlew clean assembleDebug |
Apk上传脚本
- deploy.sh
#!/bin/sh |
Tomcat 文件服务器
在tomcat安装目录\conf\Catalina\localhost下建立任意文件名xml文件,比如:download.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/download" docBase="D://download" crossContext="true">
</Context>修改tomcat配置文件,文件目录\conf\web.xml,要将红色的false改为true
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>重启tomcat,访问http://127.0.0.1:8080/download
遇到的问题
添加git 项目无法获得权限,创建ssh key ,把本地ssh key 公钥上传到你用户的git server ,在Jenkins 添加认证,ssh 私钥。
自启动脚本无法顺利执行,缺少环境变量,启动的用户不一致,启动顺序有先后,在启动脚本里添加必须的环境变量
自启动的脚本是系统启动的,和登陆用户不是一个环境
先在本地运行保证脚本的正确性
根据Log 查看什么错误
二、Jenkins邮件配置
目标:1. 构建自动发邮件;2. 邮件模板;3. 组织友好下载链接;
1. 邮件配置
添加插件:Email Extension Plugin
设置SMTP服务器:系统管理->系统设置->在Extended E-mail Notification项设置smtp service。注意设置的不是jenkins邮件通知项。
设置job邮件配置:
- 在“增加构建后操作步骤”选择“Editable Email Notification”
- Project Recipient List,设置接受邮箱,多个邮箱空格隔开即可
- Content Type,选择为HTML
- Default Subject,邮件标题
- Default Content,邮件内容,可以写html
- 注意:这些选项里面都可以使用“全局邮件变量”,参见链接
如何设置友好的下载链接:
- 下载地址每次都会发生变化,主要是“时间变量”
- “时间变量”,Day,Time需要设置到jenkins的环境变量中,这样后续执行才能共用这些变量,使用
- “构建环境”:勾选“Inject environment variables to the build process”,在下面”Evaluated Groovy script”选项中设置groovy脚本,添加到环境变量
- 修改“构建 Excute shell“ deploy.sh脚本,脚本中的时间变量不在是本地定义,而是使用上面设置的构建变量
${CURR_DAY}
,${CURR_TIME}
- 修改“Editable Email Notification”-> “Default Content”,当前版本根据“时间变量”
${CURR_DAY}
,${CURR_TIME}
动态生产下载地址
Evaluated Groovy script 添加如下脚本内容,后续的脚本中,可以引用
${CURR_DAY}
,${CURR_TIME}
TimeZone.setDefault(TimeZone.getTimeZone('Asia/Shanghai')) |
- Email Default Content 内容
文件下载:<br/><hr/> |
2. 其他问题
- smtp邮件服务一致无法正常发生,原因可能出在,ssl授权,smtp端口等问题上
- 时区问题默认获得的时间少8小时,需要TimeZone为“Asia/Shanghai”