企业级devops自动化部署学习 (4)jenkins的构建细节配置
作者:互联网
一:常用的构建触发器
Jenkins内置4种构建触发器:
- 触发远程构建
- 其他工程构建后触发(Build after other projects are build)
- 定时构建(Build periodically)
- 轮询SCM(Poll SCM)
触发远程构建
1、在构建触发器中选择【触发远程构建】
2、访问远程构建地址即可触发构建
http://192.168.80.134:8888/job/test_pipeline_Declarative/build?token=6666
其他工程构建后触发
1、创建一个前置项目pre_job
2、创建一个项目(post_job)引用前置项目(pre_job)
3、构建前置的项目pre_job
定时构建
1、创建定时构建项目
2、配置定时构建日程表
定时字符串从左往右分别为: 分 时 日 月 周
一些定时表达式的例子:
每30分钟构建一次:H代表形参 H/30 * * * *
每2个小时构建一次: H H/2 * * *
每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * *
每天中午12点定时构建一次 H 12 * * *
每天下午18点定时构建一次 H 18 * * *
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
每两小时一次,每个工作日上午9点到下午4点 H H(9-16)/2 * * 1-5
示例:配置每天凌晨2点构建
轮询SCM
轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。
1、创建轮询SCM构建项目
2、配置日程表
配置完后,Jenkins会定时扫描本地整个项目的代码,如果项目代码有变更,则会在日程表时间区间触发构建,这个构建方式会增大系统的开销,不建议使用。
Git hook自动触发构建
上面我们看到在Jenkins的内置构建触发器中,轮询SCM可以实现Gitlab代码更新,项目自动构建,但是该方案的性能不佳。那有没有更好的方案呢? 有的。就是利用Gitlab的webhook实现代码push到仓库,立即触发项目自动构建。
轮询SCM与webhook自动触发构建的示意图:
1、Jenkins安装Gitlab WebHook Trigger和Gitlab插件
2、配置Jenkins系统管理
3、在jenkins项目中配置Webhook触发器
4、把Jenkins生成的Gitlab webhook URL复制到Gitlab的webhook中
(1)、gitlab开启webhook功能
Menu->admin->settings->network->outbound requests->expand->勾选【Allow requests to the local network from web hooks and services】
(2)、gitlab在项目中添加webhook
(3)、在gitlab中测试触发器请求发送是否正确
表示gitlab的webhook配置正确,请求正常发送给了jenkins
(4)、更新代码并推送代码到gitlab,查看是否自动触发构建
(5)、启动项目并访问
java -jar /var/lib/jenkins/workspace/test_pipeline_Declarative/target/gitlab_test_demo-0.0.1-SNAPSHOT.jar
二:参数化构建
有时在项目构建的过程中,我们需要根据用户的输入动态传入一些参数,从而影响整个构建结果,这时我们可以使用参数化构建。Jenkins支持非常丰富的参数类型
下面示例通过输入gitlab的分支名称将代码部署到不同的分支中
1、gitlab中创建分支v1
2、修改下master代码再推送到gitlab中
3、在jenkins的test_pipeline_Declarative项目下添加字符串类型参数
4、在流水线pipeline中引用参数
5、构建项目,参数为master
6、访问项目
7、再次构建项目,构建参数选择为V1
8、再来访问项目
三:配置邮箱服务器发送构建结果
邮箱发送构建结果需要安装Email Extension插件
登录邮箱设置开启POP3/SMTP服务,IMAP/SMTP服务,并生成授权码
在Jenkins【Configure System】中设置邮件相关参数
(1)Jenkins Location设置管理员邮箱
2、Extended E-mail Notification配置SMTP服务器信息
3、在【邮件通知】里再配一次上述步骤的信息
4、测试上述配置是否正确
示例:演示企业项目中实现构建结束后发送邮件功能
1、在项目根目录中编写邮件发送模板,在网上找了个通用的邮件模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
本邮件由系统自动发出,无需回复!<br/>
各位同事,大家好,以下为***项目构建信息</br>
<td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>触发原因: ${CAUSE}</li>
<li>构建状态: ${BUILD_STATUS}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
<li>项目 报告: <a href="${PROJECT_URL}WebTest_Report">${PROJECT_URL}WebTest_Report</a></li>
</ul>
<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>
<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>
</td>
<td>
</td>
</tr>
</table>
</body>
</html>
2、在pipeline中添加邮件发送的配置
pipeline {
agent any
stages {
stage('从gitlab中拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '4331acf3-f1e0-4e5a-a3c7-b4df55a286c6', url: 'git@192.168.80.133:test_group01/gitlab_test_demo.git']]])
}
}
stage('编译构建打包') {
steps {
sh 'mvn clean package'
}
}
}
post {
always {
emailext(
subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} -${BUILD_STATUS}!',
body: '${FILE,path="email.html"}',
to: 'xxx@qq.com'
)
}
}
}
3、构建项目
构建完成后,收到了邮件,但是并没被html解析,下面修改下解析
在jenkins系统管理->【Extended E-mail Notification】中修改
再执行构建
正确收到了构建结果信息
标签:触发,项目,gitlab,devops,企业级,构建,BUILD,Jenkins,jenkins 来源: https://www.cnblogs.com/lrc123/p/16453253.html