首页 > 解决方案 > 有没有办法编写一个保持状态跨运行的詹金斯工作?

问题描述

为了使用重试选项测试管道,我想创建一个 Jenkins 作业,该作业将在运行中以某种模式通过或失败。例如:

run 1: failure
run 2: failure
run 3: pass

然后重复该模式。

我不想假设该作业将使用相同的工作区甚至相同的节点,但我可以防止并发运行......所以仅仅标记文本文件不一定有效。

我在想它可以通过工件来完成,但我不确定如何设置它......一个工作可以从以前的工作中加载一个工件吗?

任何关于我如何将这样的东西放在一起的建议都会很棒!

标签: jenkins

解决方案


想通了......这就是我所做的,以防它对其他人有用:

我正在使用不允许并发构建的“自由式”工作

该作业将使用一个名为的文本文件counter.txt,该文件仅包含一行,其中包含计数器 # 作为我的“状态”。我将在工作结束时将其保存为工件并在开始时加载它。

$ cat counter.txt
1

第一个构建步骤:counter.txt从工件加载:

在此处输入图像描述

第二个构建步骤: bash 脚本来提取值并检查阈值(在我的情况下为 3)。以 status=1 退出,除非 counter >= 3。如果counter.txt不存在,则创建并设置为 1,否则我们加载文件并递增它,并检查该值以确定我们是否满足 PASS 条件。

在此处输入图像描述

我添加了两个构建后条件,首先我将其归档counter.txt为工件,然后删除工作区。我怀疑删除工作区是必要的,但我添加它只是为了确保counter.txt我得到的文件是工件,以防 Jenkins 决定它不想覆盖文件或其他东西。

在此处输入图像描述

当我运行它时,它正在做正确的事情:

在此处输入图像描述


推荐阅读