我有一个gitlab.gitlab-ci.yml管道,其中第一个作业决定是否执行其余作业。这两种选择都不是 \xe2\x80\x9cfailure\xe2\x80\x9d 在 \xe2\x80\x9c 发送电子邮件并提醒每个人\xe2\x80\x9d 意义上。它只是当时需要或不需要\xe2\x80\x99t 完成。
I\xe2\x80\x99m 寻找相反的allow_failure: true允许管道继续运行,无论作业的退出状态如何。相反,我想确定继续状态。
有没有一种简单或常见的方法可以做到这一点?或者我是否再次陷入生成 yaml 文件的困境?
\n目前看来不可能以“简单”的方式做到这一点,请参阅相关问题:
\n我个人建议使用needs:和走 DAG 路线artifacts,但我实际上喜欢 Elan Ruusam\xc3\xa4e 方法,使用 dotenv 在阶段之间传递变量。这是他的例子:
\n\n这给了我一个想法,也许结合 dotenv 和 if\n$SOME_VARIABLE,你可以运行/跳过一个作业。但如果所有评估都是在管道创建时执行,则它可能不起作用。此\ns片段未经测试。
\nhttps://docs.gitlab.com/ee/ci/variables/#inherit-cicd-variables
\n
build:\n stage: build\n script:\n - echo "SKIP_BUILD=true" >> .env.skip\n artifacts:\n reports:\n dotenv: .env.skip\n\ndocker build:\n script: echo yadayada\n rules:\n - if: \'$SKIP_BUILD != "true"\'\nRun Code Online (Sandbox Code Playgroud)\n这仍然需要检查下游管道中的先前状态,并且看起来相当老套,但至少不像 grep 某些文本文件那样老套。
\n由于 dotenv 可能无法在rules部分中工作,因此前面的内容必须转换为类似以下内容:
build:\n stage: build\n script:\n - echo "SKIP_BUILD=true" >> .env.skip\n artifacts:\n reports:\n dotenv: .env.skip\n\ndocker build:\n script:\n - [ "$SKIP_BUILD" = true ] && exit 0\n - your_stuff_here\n dependencies:\n - build\n\nRun Code Online (Sandbox Code Playgroud)\n另请参阅: https: //docs.gitlab.com/ee/ci/variables/README.html#pass-an-environment-variable-to-another-job
\n| 归档时间: |
|
| 查看次数: |
12061 次 |
| 最近记录: |