kubernetes - Argo 提前停止工作流程,标记完成
问题描述
想象一下,我有一个包含 5 个步骤的工作流程。
第 2 步可能会或可能不会创建一个文件作为其输出(然后将其用作后续步骤的输入)。
- 如果创建了文件,我想运行后续步骤。
- 如果在第 2 步中没有创建任何文件,我想将工作流标记为已完成,并且不执行第 3 步到第 5 步。
我确信必须有一种简单的方法来做到这一点,但我无法弄清楚如何。
我尝试在没有创建文件时使第 2 步返回非零退出代码,然后
when: "{{steps.step2.outputs.exitCode}} == 0"
在第 3 步上使用,但这仍然执行第 4 步和第 5 步(更不用说将第 2 步标记为“失败”)
所以我没有想法,任何建议都非常感谢。
解决方案
默认情况下,以非零退出代码退出的步骤会使工作流失败。
我建议编写一个输出参数来确定工作流是否应该继续。
- name: yourstep
container:
command: [sh, -c]
args: ["yourcommand; if [ -f /tmp/yourfile ]; then echo continue > /tmp/continue; fi"]
outputs:
parameters:
- name: continue
valueFrom:
default: "stop"
path: /tmp/continue
或者,您可以使用continueOn
.
continueOn:
failed: true
我会提防continueOn.failed: true
。如果您的命令出于意外原因抛出非零退出代码,则工作流程不会像应有的那样失败,并且该错误可能不会被注意到。
推荐阅读
- c# - 在windows窗体c#中拖放操作期间将光标保持在默认形状
- asp.net-core - .Net Core 2.2 Health Checks UI 给出空白页
- java - SWT Combo 防止 shift + 9 事件
- html - 如何在 div 中制作一半文本,在 CSS 中制作另一半文本?
- java - Tomcat HTTP Base 身份验证和 JAX-WS:客户端生成失败
- javascript - 使用 Jest & Enzyme 在 React 中测试父组件的道具功能
- c# - 如何在 ASP.NET CORE 3.0 中配置路由以使用带有 [FromQuery] 参数的重载 [HttpGet] 方法?
- ssis - SSIS - 如何使用执行 SQL 任务的结果来调用 Web 服务
- python - 当我在盒子上按 onclick() 时出现硒问题
- snowflake-cloud-data-platform - 如何应对大数据文件格式和外部表中区分大小写的列名?