[Jenkins]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇)
其他两篇相关文章为
- Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇)
- Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost篇)
持续交付流水线中的消息传递与协作实现
GitLab 自动触发 Jenkins 构建
配置Jenkins Job(初级)
初级通过可视化界面配置Job,已经可以满足大部分需求,但在之后我需要自定义Mattermost订阅消息内容时,我发现我必须使用Jenkins流水线脚本发送自定义消息,因此我实际中使用了高级的配置过程,初级的可以供初学者快速上手。
构建触发器——触发远程构建
Remote Access API
- 在Job的配置中添加构建触发器:
这样只要在流水线的测试阶段中访问远程触发器即可。 注意: 访问Jenkins Remote API是需要权限的,这里填上登录的用户即可。
test: # 使用jenkins远程构建stage: testscript:- curl -u $JENKINS_USER:$JENKINS_PWD $JENKINS_TRIGGER_URL
构建——执行Shell
使用echo $? 查看命令是否执行成功
How to get the numeric exit status of an exited docker container?
构建将使用执行Shell的方式进行。
echo "---开始构建---" docker pull your_registry.com/gauge-taiko-icy:master docker run --privileged --name gauge-taiko your_registry.com/gauge-taiko-icy:master || true docker inspect gauge-taiko --format='{{.State.ExitCode}}' docker cp gauge-taiko:/gauge/reports/html-report/. ./reports docker rm gauge-taiko echo "---结束构建---"
- 思路是容器会根据测试成功或失败而执行
exit 0
或exit 1
,然后docker再根据容器的退出状态得知测试情况。
- 思路是容器会根据测试成功或失败而执行
构建后操作——发布HTML页面
Jenkins上HTML报告显示无格式?
accessing Jenkins HTML report
- 如果Shell执行顺利,那么
./reports
下将会存放着HTML测试报告,所以我们可以添加Publish HTML reports
如果报告发生样式丢失情况,请前往Jenkins-系统管理-脚本命令行,输入
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
获取测试情况
- 首先需要得知测试是否成功,这个值可以在这步查看:
docker inspect gauge-taiko --format='{{.State.ExitCode}}'
然后是测试报告,可以之后将该url分享出去
- 如果希望给匿名用户权限,请在安全 > 全局安全配置 > 授权策略勾选安全矩阵,并为Anonymous Users添加Read权限,如下图
配置Jenkins Pipeline(高级)
jenkins pipeline中获取shell命令的输出_紫眸的博客-CSDN博客
流水线语法 (jenkins.io)
jenkins pipeline将通过执行的shell命令更改环境变量environment_yudelian的博客-CSDN博客
10分钟搞定让你困惑的 Jenkins 环境变量_日拱一兵-CSDN博客
Pipeline的用法相对来说还是稍微比较复杂的,不过如果只是简单应用的话,也不会涉及额外的语句。类似GitLab的流水线,分为多个stage。
如果需要执行插件的功能,可以在流水线 > 流水线语法中使用辅助功能自动生成流水线语句。
流水线总体架构
顺序执行一些stage后,根据测试结果分叉,选择对应的最终阶段
pipeline{agent anystages{stage('test'){steps{// stage test scripts}}stage('publish HTML'){steps{// stage publish HTML scripts}}stage('success'){when{// when test success}steps{// stage success scripts}}stage('failed'){when{// when test failed}steps{script{// stage failed scripts}}}} }
Stage1:test
在这个阶段里我们直接执行之前写好的shell脚本:
stage('test'){steps{script{echo "---开始构建---"sh 'docker pull your_registry.com/gauge-taiko:master'sh 'docker run --privileged --name gauge-taiko your_registry.com/gauge-taiko:master || true'TEST_RESULTS =sh(returnStdout: true, script: "docker inspect gauge-taiko --format='{{.State.ExitCode}}'").trim()sh 'docker cp gauge-taiko:/gauge/reports/html-report/. ./reports'sh 'docker rm gauge-taiko'echo "---结束构建---"}} }
- 这里注意,我们将关键的测试结果赋值给pipeline的变量TEST_RESULTS。
trim()
去掉了结果前后万恶的空格,
- 这里注意,我们将关键的测试结果赋值给pipeline的变量TEST_RESULTS。
Stage2:publish HTML
Jenkins Pipeline publish html report
这段脚本就是用辅助功能自动生成的
stage('publish HTML'){steps{script{publishHTML([allowMissing: false,alwaysLinkToLastBuild: false,keepAll: false,reportDir: './reports',reportFiles: 'index.html',reportName: 'HTML Report',reportTitles: ''])}} }
Stage3-1:success
如果TEST_RESULTS为0,证明测试通过。
- 注意:会有定时构建计划保持下一次构建定时运行
stage('success'){when{expression { TEST_RESULTS == "0"}}steps{script{echo 'success'}} }
Stage3-2:failed
Failing a build in Jenkinsfile
How to disable a Jenkins job via curl?
如果TEST_RESULTS为1,证明测试失败
stage('failed'){when{expression { TEST_RESULTS == "1"}}steps{script{mattermostSend channel: 'jenkins_hook', color: '#E40303',endpoint: 'your_mattermost_url/hooks/yx***dw',message: '测试失败!测试报告:[GaugeTestPipeline/HTML_20Report/](your_jenkins_url/job/GaugeTestPipeline/HTML_20Report/)'API_TOKEN= '110301370d3e0bcbb241ae38d3fb69ce2a'CRUMB=sh(returnStdout: true, script: "curl -s 'http://admin:110301370d3e0bcbb241ae38d3fb69ce2a@your_jenkins_url/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\\\":\\\",//crumb)'").trim()echo "$CRUMB"sh 'curl -X POST -H "$CRUMB" http://admin:110301370d3e0bcbb241ae38d3fb69ce2a@your_jenkins_url/GaugeTestPipeline/disable'error("测试失败")}} }
\\\"
会先被pipeline转义成\"
,然后再被sh转义成"
- API_TOKEN需要访问个人中心 > 设置 > API Token获取
- 项目如果被禁用,就不会继续定时构建,这样就防止反复向Mattermost推送失败消息
MINE MIND系列将在我的GitHub上实时更新,同时精选部分汇总于CSDN专栏
GitHub仓库:https://github.com/IcyLeaves/MINE-MIND
CSDN专栏:https://blog.csdn.net/qq_37398834/category_10975647.html
[Jenkins]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇)相关推荐
- [Mattermost]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost篇)
其他两篇相关文章为 Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇) Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇) ...
- [Gauge]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇)
其他两篇相关文章为 Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇) Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermo ...
- 持续集成之企业微信通知:5:在Jenkins中向企业微信推送消息
在这篇文章中结合具体的示例来介绍在Jenkins中如何向企业微信群推送消息. 环境准备 这里使用Easypack的Jenkins 2.164.3来创建验证用的Jenkins环境.使用如下步骤即可完成. ...
- Jenkins + Gitlab+ Docker + SpringBoot 构建流水线
1 环境 192.168.38.80 docker jenkins gitlab 2 Spring Boot 2.1 HelloController @RestController public cl ...
- 好棒,测试妹子都能看懂的Jenkins Docker安装教程
最近团队出了个线上BUG,导致了几个用户的订单不对,因为发现的及时,客服那边还没有接到投诉就修正过来了.所以就想贿赂测试妹子这次BUG能不能不往上报,要不然我还得写报告.复盘啥的.本以为一顿饭能搞定, ...
- jenkins修改pom文件_动手实践:美化 Jenkins 报告插件的用户界面
对于 Jenkins 而言,可使用插件来可视化各种构建步骤的结果.有一些插件可用于呈现测试结果.代码覆盖率.静态分析等.这些插件通常都会获取给定构建步骤的构建结果,并在用户界面中显示它们.为了呈现这些 ...
- Jenkins——Jenkins构建Maven项目(三种风格)+Jenkins项目构建细节
Jenkins构建Maven项目+Jenkins项目构建细节 Jenkins构建的项目类型介绍 自由风格项目构建 拉取代码 编译打包 远程部署 代码改动后的持续集成 Maven项目构建 Pipelin ...
- jenkins war包_Jenkins的安装和部署(jenkins教程)
一.jenkins的下载.安装以及环境的搭建部署. 1.什么是jenkins以及它的作用: Jenkins 是一个可扩展的持续集成(CI)平台.它只是一个平台,真正运作的都是插件. Jenkins的主 ...
- Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目
Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目 前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+ ...
最新文章
- asp.net 安装element ui_Vue组件库系列三:打造属于自己的 UI 库文档(新版本的方案)...
- 关于对 NUMA 理解(学习笔记,便于以后查阅)
- Quartz总结(一):Quartz集成Spring的2个方法
- 机器学习(三十一)——Linear Discriminant Analysis
- js学习 字符串常用方法
- php7 编译 pdo mysql_php7 编译 pdo_mysql 问题, [mysql_driver.lo] Error 1
- Babel 6.25 版本发布,JavaScript 编译器
- 微信隐藏功能关闭X5内核
- 盛大易宝只是陈天桥的梦而已
- sqlite3_英英词典
- QSettings实现记住密码
- 淘宝购买win10激活码流程
- 通过lsyncd 设置两个linux(centOS7)服务器之间的目录文件互相实时同步
- 如何使用云桌面进行开发?
- [Android]混淆Android代码
- 企业微信可以统计加班时长吗?如何查看?
- 计算机原理-ACC 等14个指令缩写
- 书评:薛定谔猫与生物学鸽子:《生命是什么?》出版75周年记
- 第十章、正则表达式和JSON
- 程序猿敲击代码的指法推荐
热门文章
- java 哲学家_哲学家吃饭(Java版)
- 旋转导电滑环接线安装使用方法
- 记录apache2.4.34更换mpm模式
- 微分方程的数值解法与程序实现 pdf_【MATLB数值】—数值计算
- 静态分析反调试apk
- Altium Designer PCB界面中的对象捕捉快捷键shift+E
- 易语言 将abc字符串分隔为单个字符的数组
- 手把手教你做安卓端人脸识别应用
- c语言字母塔问题,(最新整理)数塔问题C语言
- ‘utf-8‘ codec can‘t decode byte 0x87 in position 10: invalid start byte 解决方案