Jenkins - Pipeline Retry

Jenkins - Pipeline Retry

  • 引言
  • retry
  • retry 实例

引言

日常运行自动化测试用例,通常是晚上定时启动 pipeline job,一个 pipeline 脚本可能会涉及到多个 Job, 最后 post 发邮件汇总测试 report。有时会遇到 Jenkins 环境问题导致某 Job 失败,第二天需要手动触发 job 重跑,这样影响工作效率。那我们是否可以在 pipeline 脚本里自动 retry 呢?

retry

在 Jenkins Pipeline 中,可以使用 retry 指令来重试某个步骤。以下是一个基本的示例:

pipeline {agent anystages {stage('Test') {steps {retry(3) {// 这里放置你想要重试的步骤}}}}
}

在这个示例中,如果步骤失败,Jenkins 会尝试重新运行它,最多重试 3 次。你可以根据需要更改重试次数。

retry 实例

可以运行下面这个 pipeline 脚本实例,其中 Build stage 中有加 retry 3 次。

pipeline {agent { label "xxx" }stages {stage('Preparation') {steps {echo 'Preparing...'}}stage('Build') {steps {retry(3) {script {echo "Attempting to build..."// 可能失败的命令sh 'make build'}}}}stage('Test') {steps {echo 'Running tests...'}}}
}

jenkins pipeline 执行 log,Build stage 执行了 3 次均失败,所以 Test stage 将不再执行。

20:08:23  [Pipeline] {
20:08:23  [Pipeline] stage
20:08:23  [Pipeline] { (Preparation)
20:08:23  [Pipeline] echo
20:08:23  Preparing...
20:08:23  [Pipeline] }
20:08:23  [Pipeline] // stage
20:08:23  [Pipeline] stage
20:08:23  [Pipeline] { (Build)
20:08:23  [Pipeline] retry
20:08:23  [Pipeline] {
20:08:23  [Pipeline] script
20:08:23  [Pipeline] {
20:08:23  [Pipeline] echo
20:08:23  Attempting to build...
20:08:23  [Pipeline] sh
20:08:24  + make build
20:08:24  make: *** No rule to make target 'build'.  Stop.
20:08:24  [Pipeline] }
20:08:24  [Pipeline] // script
20:08:24  [Pipeline] }
20:08:24  ERROR: script returned exit code 2
20:08:24  Retrying
20:08:24  [Pipeline] {
20:08:24  [Pipeline] script
20:08:24  [Pipeline] {
20:08:24  [Pipeline] echo
20:08:24  Attempting to build...
20:08:24  [Pipeline] sh
20:08:24  + make build
20:08:24  make: *** No rule to make target 'build'.  Stop.
20:08:24  [Pipeline] }
20:08:24  [Pipeline] // script
20:08:24  [Pipeline] }
20:08:24  ERROR: script returned exit code 2
20:08:24  Retrying
20:08:24  [Pipeline] {
20:08:25  [Pipeline] script
20:08:25  [Pipeline] {
20:08:25  [Pipeline] echo
20:08:25  Attempting to build...
20:08:25  [Pipeline] sh
20:08:25  + make build
20:08:25  make: *** No rule to make target 'build'.  Stop.
20:08:25  [Pipeline] }
20:08:25  [Pipeline] // script
20:08:25  [Pipeline] }
20:08:25  [Pipeline] // retry
20:08:25  [Pipeline] }
20:08:25  [Pipeline] // stage
20:08:25  [Pipeline] stage
20:08:25  [Pipeline] { (Test)
20:08:25  Stage "Test" skipped due to earlier failure(s)
20:08:25  [Pipeline] }
20:08:25  [Pipeline] // stage
20:08:25  [Pipeline] }
20:08:26  [Pipeline] // node
20:08:26  [Pipeline] End of Pipeline
20:08:26  ERROR: script returned exit code 2
20:08:26  Finished: FAILURE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第三十六天 | 1005.K次取反后最大化的数组和、134.加油站、135.分发糖果

目录 1005.K次取反后最大化的数组和 思路 代码 代码 134.加油站 思路 代码 135.分发糖果 思路 代码 1005.K次取反后最大化的数组和 本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。 代码随想录 思路 直觉,直接写&…

7. C++通过select的方式实现高性能网络服务器

什么是异步IO 异步IO指的是用户程序将IO请求提交后,无需等待IO操作的完成,而是可以继续处理别的事情。 所谓异步IO,是指以事件触发的机制来对IO操作进行处理。 与多进程和多线程技术相比,异步I/O技术的最大优势是系统开销小,系统不必创建进程…

R语言数据处理(四)

R语言数据处理(四) 1. 表格合并 1. 表格合并 🚀🚀🚀代码功能: 从指定文件夹中读取所有 .xlsx 文件,并提取每个文件中特定行和列的数据,然后将这些数据合并到一个最终的数据框中&…

在Nano上部署yolov5

确认镜像版本为JetPack4.4.1(L4T 32.4.4)以上版本 下载链接下载pytorch+nvidia docker镜像(pytorch1.6+torchvision0.7.0)yolov5opencv4.4.0 1. 在已经部署了镜像的机器上获取镜像   1.1 获取镜像名

《Ai学习笔记》-模型集成部署

后续大多数模型提升速度和精度: 提升速度: -知识蒸馏,以distillBert和tinyBert为代表 -神经网络优化技巧。prune来剪裁多余的网络节点,混合精度(fp32和fp26混合来降低计算精度从从而实现速度的提升) 提…

【教学类-58-04】黑白三角拼图04(2-10宫格,每个宫格随机1张-6张,带空格纸,1页6张黑白,1张6张白卡)

背景需求: 前期制作了黑白三角拼图2*2、3*3、4*4,确定了基本模板,就可以批量制作更多格子数 【教学类-58-01】黑白三角拼图01(2*2宫格)固定256种随机抽取10张-CSDN博客文章浏览阅读522次,点赞13次&#x…

零基础学Java(全170集)

课程概述 本课程旨在全面深化对 Java 语言的核心技术理解,并提升编程实践能力。课程内容涵盖以下关键领域: 掌握Java核心语法,为后续学习打下扎实的基础。熟练运用Java常用的类库与开发工具,提高开发效率与质量。解决面向对象编…

卡码网笔试 | 118 小y删数字、119 小红的字符串切割、120 小红的数字匹配

118 小y删数字 逐个数字循环除10&#xff0c;并且用一个变量记录非0位数&#xff0c;最后加起来即可。 代码如下&#xff1a; #include <iostream>using namespace std;int main() {int n;cin >> n;int a[n];int sum 0;for (int i 0; i < n; i) cin >&g…

高中数学:平面向量-题型总结及解题思路梳理

一、知识点及解题思路梳理 高中&#xff0c;2/3的向量题目是坐标向量题&#xff0c;1/3是几何向量题。但是&#xff0c;这1/3的几何向量题可以转换成坐标向量题。 二、练习 例题1 几何型向量题 例题2

【机器学习300问】100、怎么理解卷积神经网络CNN中的池化操作?

一、什么是池化&#xff1f; 卷积神经网络&#xff08;CNN&#xff09;中的池化&#xff08;Pooling&#xff09;操作是一种下采样技术&#xff0c;其目的是减少数据的空间维度&#xff08;宽度和高度&#xff09;&#xff0c;同时保持最重要的特征并降低计算复杂度。池化操作不…

【LeetCode 151】反转字符串中的单词

1. 题目 2. 分析 这题要是用Python写&#xff0c;就非常简单了。 3. 代码 class Solution:def reverseWords(self, s: str) -> str:s " ".join(reversed(s.strip().split()))return s

池的概念以及数据库连接池 Druid

1.池的概述 池就相当于一个共享资源&#xff0c;是对资源的整合和调配&#xff0c;节省存储空间&#xff0c;当需要的时候可以直接在池中取&#xff0c;用完之后再还回去。 为什么需要连接池 假如没有连接池&#xff0c;我们操作数据库的流程如下&#xff1a; 应用程序使用…

若依 Ruoyi-Vue PageHelper 分页失效 total为记录数

分页插件PageHelper返回记录总数total竟然出错了 执行控制台的SQL&#xff0c;查询出来的total数量是对的&#xff0c;很奇怪分页的total设置为查询到的记录数。 怀疑对list.stream操作&#xff0c;影响了分页&#xff0c;代码发现确实是这样&#xff0c;debug&#xff0c;居然…

firewalld 防火墙

firewalld概述 Linux系统防火墙从CentOS7开始的默认防火墙工作在网络层&#xff0c;属于包过滤防火墙 Firewalld和iptables的关系 netfilter 位于Linux内核中的包过滤功能体系称为Linux防火墙的“内核态” firewalld Centos默认的管理防火墙规则的工具称为防火墙的“用…

Gradient-checkpointing的原理

原文&#xff1a; 将更大的网络安装到内存中。|by 雅罗斯拉夫布拉托夫 |张量流 |中等 (medium.com) 前向传播时&#xff0c;隔几层就保留一层activation数据&#xff0c;其余层的activation都释放掉&#xff1b; 反向传播时&#xff0c;从最近的checkpoint去重新跑forward&…

React 如何自定义 Hooks

自定义 Hooks React 内部自带了很多 Hooks 例如 useState、useEffect 等等&#xff0c;那么我们为什么还要自定义 Hooks&#xff1f;使用 Hooks 的好处之一就是重用&#xff0c;可以将代码从组件中抽离出来定义为 Hooks&#xff0c;而不用每个组件中重复去写相同的代码。首先是…

Ps:消失点滤镜 - 测量工具

Ps菜单&#xff1a;滤镜/消失点 Filter/Vanishing Point 快捷键&#xff1a;Ctrl Alt V “消失点”滤镜中的测量工具 Measure Tool用于在透视平面内测量图像中对象的大小&#xff0c;适用于建筑师、设计师、法医和木工等需要精确测量的用户。 快捷键&#xff1a;R ◆ ◆ ◆…

基于springboot+vue的4S店车辆管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

CMS Full GC流程以及调优配置

个人博客 CMS Full GC流程以及调优配置 | iwts’s blog CMS CMS 收集器是以实现最短 STW 时间为目标的收集器&#xff0c;所以对于偏业务的后台开发而言&#xff0c;基本上都无脑选CMS了。 多线程收集器&#xff0c;工作在老年代&#xff0c;采用标记清除算法。比较特殊&am…

React开发必须掌握这些es6语法-03

箭头函数 其实就是java的lamda编程&#xff0c;它的特点是单向无环流&#xff0c;没有变量&#xff0c;源数据状态不能被改变。 基本语法 ()> {} //表示一个空函数&#xff0c;和function(){}功能一样&#xff0c;如果只有一行语句则&#xff0c;{}可省略 lef fn arg &g…