jenkins - 有没有办法编写一个保持状态跨运行的詹金斯工作?
问题描述
为了使用重试选项测试管道,我想创建一个 Jenkins 作业,该作业将在运行中以某种模式通过或失败。例如:
run 1: failure
run 2: failure
run 3: pass
然后重复该模式。
我不想假设该作业将使用相同的工作区甚至相同的节点,但我可以防止并发运行......所以仅仅标记文本文件不一定有效。
我在想它可以通过工件来完成,但我不确定如何设置它......一个工作可以从以前的工作中加载一个工件吗?
任何关于我如何将这样的东西放在一起的建议都会很棒!
解决方案
想通了......这就是我所做的,以防它对其他人有用:
我正在使用不允许并发构建的“自由式”工作。
该作业将使用一个名为的文本文件counter.txt
,该文件仅包含一行,其中包含计数器 # 作为我的“状态”。我将在工作结束时将其保存为工件并在开始时加载它。
$ cat counter.txt
1
第一个构建步骤:counter.txt
从工件加载:
第二个构建步骤: bash 脚本来提取值并检查阈值(在我的情况下为 3)。以 status=1 退出,除非 counter >= 3。如果counter.txt
不存在,则创建并设置为 1,否则我们加载文件并递增它,并检查该值以确定我们是否满足 PASS 条件。
我添加了两个构建后条件,首先我将其归档counter.txt
为工件,然后删除工作区。我怀疑删除工作区是必要的,但我添加它只是为了确保counter.txt
我得到的文件是工件,以防 Jenkins 决定它不想覆盖文件或其他东西。
当我运行它时,它正在做正确的事情:
推荐阅读
- c# - 另一个列表中不存在 id 的 Lambda
- php - 如何保护 $_GET 请求和整个网站
- python - Findall - 一定范围
- percentage - 使用 postgresql 连接查询计算百分比
- c# - 将 fody.costura 添加到项目后,在 prism WPF C# 中加载模块时出现问题
- javascript - ontransitionend 不触发/附加但 addEventListener 有效
- c - C中的逻辑运算符导致我的循环出现问题?
- ibm-mobilefirst - 从服务器下载更新后,mobilefirst ionic-cordova 应用程序中的直接更新失败?
- ruby-on-rails-3 - 未定义的方法 `total_pages' 用于#
- javascript - Windows 浏览器中文本/csv 文件的 MIME 类型错误