Jenkins
Jenkins
安装
参考
https://blog.csdn.net/xhmico/article/details/136535498
https://blog.csdn.net/weixin_53742691/article/details/139269989
新版本的jenkins需要jdk11或以上版本
- 下载
wget https://get.jenkins.io/war-stable/2.452.3/jenkins.war
- 添加启动脚本。指定 Jenkins 的主目录位置和端口,并限制jenkins内存
vi start_jenkins.sh
export JENKINS_HOME=/data/jenkins/data
nohup java -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar jenkins.war --httpPort=8888 -Duser.language=C.UTF-8 > jenkins.log &
- 页面访问,在日志里找到临时密码,先不安装插件
- 修改插件源
下载国内的源文件https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-stable-2.452.3/update-center.json,替换updates目录中的default.json文件
- 页面-插件管理-高级修改升级站点
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.452.3/update-center.json
GitLab集成
- 先获取gitlab的token
用户 - Preferences - Access Tokens
填写Token name、过期时间
Select scopes下勾选所有
点击“Create personal access token”按钮
- 将生成的token在jenkins中创建
进入jenkins-dashboard-Credentials-add credentials
类型 :GitLab API token
API token:将Gitlab中的token复制过来
ID:任意的名称,便于之后查看
-
在Jenkins中新建一个item,选择“Freestyle project”
-
选择Github项目并填写URL
-
设置源码管理
-
设置构建触发器
-
将上图中“http://100.86.13.87:8888/project/temp_jmeter”粘贴至GitLab侧-项目-Settings-Webhooks-URL中,勾选Trigger中“Push events”,关闭“Enable SSL verification”,然后点击“Add webhook”
-
可以测试是否可以调用成功
-
回到jenkins,完成剩余的构建步骤后,点击“保存”即可
-
之后每次git项目提交了新的记录,就会自动在jenkins构建
配置发送邮件
参考:https://blog.51cto.com/u_16099219/10191683
1. 在Jenkins - Dashboard - Manage Jenkins - System
[Jenkins Location] 更改Jenkins URL、系统管理员邮件地址
[邮件通知] 配置对应邮箱的smtp信息,注意密码处要填写邮箱那边申请的授权码
-
完成后进入项目中,添加“构建后操作-E-mail Notification”,Recipients填写收件人邮箱(空格分隔)
-
添加“构建后操作 - Editable Email Notification”,点击“Advanced Settings”,Triggers区域删除默认的,Add Trigger -> Always
-
在Content区域中添加以下模板
<hr/> (本邮件是程序自动下发的,请勿回复!)<br/><hr/> 项目名称:$PROJECT_NAME<br/><hr/> 构建编号:test_$BUILD_NUMBER<br/><hr/> git版本号:${GIT_REVISION}<br/><hr/> 构建状态:$BUILD_STATUS<br/><hr/> 触发原因:${CAUSE}<br/><hr/> 构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/> 构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/> 变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>
- 保存项目即可
Pipeline
组成
Stage:阶段, 一个 pipline 可以划分为若干个 stage, 每个 stage 都是一个操作步骤,比如 clone 代码、 代码编译、 代码测试和代码部署, 阶段是一个逻辑分组, 可以跨多个 node 执行。
Node:节点, 每个 node 都是一个 jenkins 节点, 可以是 jenkins master 也可以是 jenkins agent, node 是执行 step 的具体服务器。
Step:步骤, step 是 jenkins pipline 最基本的操作单元, 从在服务器创建目录到构建容器镜像, 由各类 Jenkins 插件提供实现, 一个 stage 中可以有多个 step, 例如: sh“ls "
以下为一个实例,获取git项目中的jmeter脚本,执行后将日志通过邮件发送
查看代码
pipeline {
agent any
environment {
GIT_CREDENTIALSID = "这里填写用户在jenkins中创建的凭证id(gitlab的登录用户名、密码)"
GIT_URL = "http://100.86.xx.xx/test/test_jmeter.git"
}
stages {
stage('clean') {
steps {
sh 'rm -rf result.jtl jmeter.log'
echo '==== clean history data finished ===='
}
}
stage('Build') {
steps {
git branch: 'main', credentialsId: "${GIT_CREDENTIALSID}", url: "${GIT_URL}"
}
}
stage('Run jmeter') {
steps {
sh 'jmeter -n -t test.jmx -l result.jtl -e -o /data/tomcat8/webapps/report'
}
}
}
post {
always {
emailext (
subject: "Build: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
body: '''<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<table width="95%" cellpadding="20" cellspacing="0" style="font-size: 1pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td><br />
<b><font color="#0B610B"><font size="6">构建信息</font></font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<div style="font-size:15px">
<li>构建项目:${PROJECT_NAME}</li>
<li>构建结果:<span style="color:red">${BUILD_STATUS}</span></li>
<li>构建编号:${BUILD_NUMBER}</li>
<li>git版本号:${GIT_REVISION}</li>
<li>触发原因:${CAUSE}</li>
<li>构建地址:<a href=${BUILD_URL}>${BUILD_URL}</a></li>
<li>构建日志:<a href=${BUILD_URL}console>${BUILD_URL}console</a></li>
<li>jmeter报告地址:<a href=http://100.86.13.87:8080/report/ target="_blank">打开报告</a></li>
<li>变更集:${JELLY_SCRIPT}</li>
</div>
</ul>
</td>
</tr>
</table></font>
</body>
</html>''',
to: "aaa@xx.com",
from: "xx@xx.com"
)
}
}
}