一、先简单介绍下实际工作场景中使用情况
Jenkins作为一个服务,需要配置在服务器中,但资源紧张,时长将Jenkins与开发的Git代码服务地址配置在一起,测试单独使用一个服务器,以下文章,还是使用正规的流程,使用3个服务器进行配置说明。作为参考
目录
一、 Jenkins安装和配置
1.1 Jenkins安装
1.1.1 Tomcat容器中安装
1.1.2 安装jenkins服务
1.2 初始化及插件安装
1.2.1 环境变量配置
1.2.2 查看工具正常运行
1.3 系统配置
二、 构建工程配置
2.1 创建工程工作区
2.2 工程配置
2.1.1. 通用设置
2.1.2. 源码管理
2.1.3. 构建方式配置:
2.1.4. 构建环境
2.1.5. 构建后操作
一、 Jenkins安装和配置
1.1 Jenkins安装
有两种安装方式,运行在Tomcat web容器中,直接安装Jenkins服务。
1.1.1 Tomcat容器中安装
Tomcat web容器是一个跨平台web服务容器,无论Windows还是Linux,Tomcat正常运行必须先安装Java Sdk。在Jenkins官方网站上下载jenkins版本war包,选择Release版本。将下载到的war包放在Tomcat容器的webapps目录中,启动tomcat。浏览器中tomcat端口,如 localhost:8080/jenkins。
1.1.2 安装jenkins服务
在windows系统中运行,可以直接在jenkins官方网站下载,首页-> Downloads -> LTS Release -> 2.32.2.war 下拉菜单选择 Windows; 进入下载页面;解开压缩包,安装jenkins.msi。安装完成后,在浏览器中访问localhost:8080。
在Linux系统中运行,可以直接使用命令安装。如,Ubuntu系统执行apt-get install Jenkins; Centos中执行yum install Jenkins;
在官方网站下载对应的安装包,首页->Downloads->LTS Release->2.32.2.war 下拉菜单选择如,Ubuntu/Debian下载jenkins_2.32.2.deb;Red Hat/Fedora/CentOS 下载
1.2 初始化及插件安装
1.2.1 环境变量配置:
Windows:
JAVA_HOME: C:\Program Files\Java\jdk1.7.0_07
JRE_HOME: C:\Program Files\Java\jdk1.7.0_07\jre
GIT_HOME: C:\xxx\git
GRADLE_HOME: D:\xxx\android-studio2.1\gradle
ANDROID_HOME: D:\xxx\SDK
Path: %GIT_HOME%\bin;%GRADLE_HOME%\bin;%ANDROID_HOME%\bin;
Linux(CentOS):
Home/.bashrc文件最后添加下面内容,后执行 source .bashrc
export JAVA_HOME=”/home/jenkins/tools/jdk1.7.0_75”
export JRE_HOME=”PATH:GRADLE_HOME/bin:JAVA_HOME/lib:$JAVA_HOME/jre/lib:”
1.2.2 查看工具正常运行:
Windows:
Linux:
1.2.3 启动Jenkins&安装插件
Jenkins首次启动,需要初始化密码
1.3 系统配置
二、 构建工程配置
2.1 创建工程工作区
输入工程名称“Actoma”,选择“Freestyle project”,页面左下角“OK”
2.2 工程配置
2.1.1. 通用设置
2.1.2. 源码管理
2.1.2.1. Git配置,账户添加代码获取私钥
2.1.2.2. 配置代码地址
Repository URL: XXXXXXXXXX.git
2.1.3. 构建触发器
2.1.3.1. 远程触发构建
2.1.3.1.1. 配置令牌内容
2.1.3.1.2. 触发URL内容
http://xx.xx.xx.xx:8080/jenkins/job/xxxx_produce/build?token=xxxx&cause=构建发布版本
token=xxx 令牌;与服务器内部配置
cause=构建发布版本;描述本次构建说明参数
2.1.3.1.3. 触发方式
在浏览器地址栏输入上面触发URL内容,回车访问,jenkis服务器内部自动开始构建。
2.1.3.1.4. 构建结果展示
2.1.3.2. 其他构建完成后(Build after other projects are built)
2.1.3.3. 周期性构建(Build periodically)
2.1.3.3.1. 日程表配置语法
日程表配置语法和Linux中cron的配置语法一致。每一行有5个字段,字段之间以Tab或者空格区分,各字段含义如下:
MINUTE HOUR DOM MONTH DOW
MINUTE Minutes within the hour (0–59)
HOUR The hour of the day (0–23)
DOM The day of the month (1–31)
MONTH The month (1–12)
DOW The day of the week (0–7) where 0 and 7 are Sunday.
每个字段可以指定多个值,规则如下:
* 表示所有的取值
M-N 表示一个取值区间
M-N/X 或 /X 表示取值区间(M-N)或者所有取值() 范围中每X一次
A,B,…,Z 表示指定的时间点
随机数设置使用“H”符号,可以在取值范围中获取一个随机值执行。如0 0 * * * 意为每天0点0分执行一次;使用H H * * * 每天执行一次,执行时间点不是一个确定值。
H还可以使用在一个区间设置中。如:H H(0-7) * * *意为每天一次,在0点到7:59之间随机取一个时间。
2.1.3.3.2. 日程表配置举例
1) 每十五分钟一次,具体时间点随机取
H/15 * * * *
2) 每个小时前半小时内每10分钟执行一次,具体执行点随机取
H(0-29)/10 * * * *
3) 每周一到周五,每天9点到16:59之间两小时一次,每次在45分执行。执行时间点为9:45, 11:45,13:45,15:45
45 9-16/2 * * 1-5
4) 每周一到周五,每天9点到16:59之间两小时一次,执行时间随机取,可能执行时间为10:38,12:38,14:38,16:38
H H(9-16)/2 * * 1-5
5) 每年1月到11月,每月1日、15日,随机时间执行一次
H H 1,15 1-11 *
项目构建配置如下,每周二到周六凌晨1点钟某个时间点进行一次构建
2.1.3.4. 轮询版本库(Poll SCM)
轮询日程表配置方法参考上面内容,当执行时间到时检查git上面有新的提交则开始构建任务,否则不执行。目前我们配置为每周一到周六上午9点到18:59之间每两小时执行一次,具体时间点随机获取。
2.1.4. 构建环境
基础配置
2.1.4.1. 构建前/后执行ssh服务器命令
可以在构建开始前,或者构建结束后执行ssh命令,如:构建完成后将版本转存到指定服务器,将构建目录下面的输出版本拷贝到指定服务器的指定目录,如*.apk拷贝到/home/Jenkins/dailyVersion目录。
2.1.4.2. ssh服务配置
系统设置中配置Publish over SSH内容,示例如下:
2.1.5. 构建
2.1.5.1. 使用jenkins环境执行构建
上面配置会构建出来工程下面所有类型的版本
指定构建common-debug版本
2.1.5.2. 使用命令行执行构建
2.1.6. 构建后操作
2.1.6.1. 发布lint结果(Publish Android Lint results)
每次构建完成后,相关信息会归类发布,如下图:
2.1.6.2. 邮件配置
2.1.6.2.1. 系统设置中进行邮件服务基础信息配置
2.1.6.2.2. 构建工程中配置
2.1.6.2.3. 设置触发器
三、 辅助任务配置
3.1 构建版本上传至svn配置
3.1.1. svn工具安装
服务器上安装svn工具:
Ubuntu: apt-get install svn
CentOS: yum install svn
查看版本号:svn –version
3.1.2. 版本转存
请参考2.1.4.1章节
3.1.3. svn提交版本,执行脚本
svn常用命令update, add, commit, cleanup。
svn update –username xxx –password xxx
将版本库的修改合并到工作副本中
svn add xxxx
把文件xxxx和目录纳入版本控制,通过调度加到版本库。它们会在下一次提交时加入。
svn commit –message addfile
把工作副本的修改提交到版本库
svn cleanup
递归清理工作副本,删除锁,继续未完成操作,等等
构建版本被转存后,即可执行svn上传文件脚本,将版本提交到svn,之后邮件通知相关人员。
!/bin/bash
cd /home/jenkins/dailyVersion
rm -f presenter_mainframe*.apk
for file in file
done
filename=filename
cp -f filename
cd ../at+svn/构建测试版本
svn cleanup
svn add $filename
svn commit –message dailyVersion
echo “===========完成文件提交==============”
3.2 自动化测试配置
3.2.1. 自动化测试脚本开发
由测试同事根据测试需要开发自动化测试脚本
3.2.2. 版本准备及自动化安装
根据每日构建版本转存待测试版本到自动化测试服务器
Publisher over ssh 中ssh服务配置
3.2.3. 自动化测试任务配置
源码管理从svn上获取自动化脚本
构建配置,转存脚本及执行测试脚本
生成测试报告,该测试报告在自动化测试服务器上产生,回传到jenkins服务器,在jenkins服务器中组织报告
发送通知邮件