文章目录
- 3. jenkins 风格类型
- 3.1 自由风格类型
- 3.1.1 拉取代码
- 3.1.2 编译
- 3.1.3 部署
- 3.2 Maven 风格类型
- 3.2.1 安装Maven Integration插件
- 3.2.2 创建Maven项目
- 3.2.3 配置项目
- 3.3 流水线风格类型
- 3.3.1 安装pipline
- 3.3.2 创建项目
- 3.3.3 拉取代码
- 3.3.4 构建成功
- 3.4 jenkins 常见的触发器
- 3.4.1 gitee 触发器
- 3.4.2 触发远程构建
- 3.4.3 其他工程创建触发
- 3.4.4 定时构建
- 3.4.5 参数化构建
- 3.5 邮件发送
- 3.5.1 安装插件
- 3.5.2 开启邮箱支持
- 3.5.3 配置
- 3.6 SonarQube 代码审查
3. jenkins 风格类型
3.1 自由风格类型
拉取代码->编译->打包->部署
3.1.1 拉取代码
3.1.2 编译
构建->添加构建步骤->Executor Shell
echo "开始编译和打包"
mvn clean package
echo "编译和打包结束"
这个时候会报错,
解决方法
echo $PATH
复制path 路径,点击全局配置,添加全局属性
3.1.3 部署
把项目部署到远程的Tomcat里面
安装 Deploy to container插件
点击构建后操作
添加tomcat 的凭证
构件后操作
就可以打包成功
3.2 Maven 风格类型
3.2.1 安装Maven Integration插件
3.2.2 创建Maven项目
3.2.3 配置项目
3.3 流水线风格类型
Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy
Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法
Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一
个 Jenkinsfifile 脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM)
中直接载入 Jenkinsfifile Pipeline 这种方法)。
3.3.1 安装pipline
3.3.2 创建项目
3.3.3 拉取代码
自定义流水线
构建流水线语法
拉取代码
生成pipline 代码
构件代码
pipeline {
agent any
stages {
stage('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '1527f9a8-f6ed-41b3-93a7-c05a88f36de9', url: 'https://gitee.com/fakerlove/clock']]])
}
}
stage('build project') {
steps {
sh 'mvn clean package'
}
}
stage("sa") {
steps {
echo 'goujian构件wancheng'
}
}
}
}
3.3.4 构建成功
3.4 jenkins 常见的触发器
jenkins 常见触发器
其中gitee为安装了gitee 插件后,出现的触发
默认有4种
- 触发远程构建
- 轮训SCM
- 其他工程构建后触发
- 定时构建
3.4.1 gitee 触发器
gitee 设置签发文章
https://gitee.com/help/articles/4193#article-header9
在jenkins 上设置触发器,点击生成秘钥
gitee设置webHook
修改代码,提交至gitee,jenkins立即进行了刷新测试
3.4.2 触发远程构建
设置token信息
输入网址即可进行触发
http://192.168.66.101:8888/job/web_demo_pipeline/build?token=6666
3.4.3 其他工程创建触发
创建pre_job流水线工程
配置需要触发的工程
3.4.4 定时构建
每30分钟构建一次:H代表形参 H/30 * * * * 10:02 10:32
每2个小时构建一次: H H/2 * * *
每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * *
每天中午12点定时构建一次 H 12 * * *
每天下午18点定时构建一次 H 18 * * *
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午
4:38) H H(9-16)/2 * * 1-5
3.4.5 参数化构建
3.5 邮件发送
3.5.1 安装插件
3.5.2 开启邮箱支持
开启权限
点击生成授权码
发送配置短信,发送完成后,点击我已发送、获取密码
3.5.3 配置
配置邮件管理员
配置Extended
配置 jenkins 默认邮箱
点击测试
在项目的根目录下创建email.html
<!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>
<td>(本邮件是程序自动下发的,请勿回复!)</td>
</tr>
<tr>
<td>
<h2>
<span style="color: #0000FF; ">构建结果 - ${BUILD_STATUS}</span>
</h2>
</td>
</tr>
<tr>
<td><br/> <b><span style="color: #0B610B; ">构建信息</span></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>构建日志: <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>
</ul>
</td>
</tr>
<tr>
<td><b><span style="color: #0B610B; ">Changes Since Last Successful Build:</span></b>
<hr size="2" width="100%" align="center"/>
</td>
</tr>
编写Jenkinsfile添加构建后发送邮件
<tr>
<td>
<ul>
<li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul>
${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br/>%c<br/>",showPaths=true,changesFormat="
<pre>[%a]<br/>%m</pre>
",pathFormat=" %p"}
</td>
</tr>
<tr>
<td><b>Failed Test Results</b>
<hr size="2" width="100%" align="center"/>
</td>
</tr>
<tr>
<td>
<pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
<br/>
</td>
</tr>
<tr>
<td>
<b>
<span style="color: #0B610B; ">构建日志 (最后 100行):</span>
</b>
<hr size="2" width="100%" align="center"/>
</td>
</tr>
<tr>
<td>
<textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">
${BUILD_LOG, maxLines=100}
</textarea>
</td>
</tr>
</table>
</body>
</html>
修改流水线的语法,在最后添加pipline 语法
pipeline {
agent any
stages {
stage('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '1527f9a8-f6ed-41b3-93a7-c05a88f36de9', url: 'https://gitee.com/fakerlove/clock']]])
}
}
stage('build project') {
steps {
sh 'mvn clean package'
}
}
stage("sa") {
steps {
echo 'goujian构件wancheng'
}
}
}
post {
always {
emailext(
subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
body: '${FILE,path="email.html"}',
to: '203462009@qq.com' )
}
}
}
点击重新构建,构建完成后,会接收到邮件信息
3.6 SonarQube 代码审查