eya*_*uby 3 if-statement pipeline rules gitlab gitlab-ci
我在 Gitlab-CI 中有一个管道,其中一项作业有以下规则:
rules:
- if: "$CI_PIPELINE_SOURCE == "merge_request_event"
Run Code Online (Sandbox Code Playgroud)
如果我将其更改为:会有什么不同吗?
- if: "$CI_PIPELINE_SOURCE == "merge_request_event"
when: always
Run Code Online (Sandbox Code Playgroud)
因为,第一个规则将在满足条件时执行,而替代规则(带有when:always的规则)将执行相同的操作。
那么“何时:总是”会发生什么变化呢?如果它能改变什么的话。
是,有一点不同。默认情况下,值为when:--on_success仅当前一阶段的作业成功时才运行作业。always即使前一阶段的作业失败,使用也会允许作业运行。
根据文档,这些是可能的值when:
\n\n\n
on_success(默认):仅当早期阶段的所有作业都成功或allow_failure:true时才运行作业。
\nmanual:仅在手动触发时运行作业。
\nalways:无论早期阶段的作业状态如何,都运行作业。也可用于工作流程:规则。
\non_failure:仅当早期阶段至少有一个作业失败时才运行作业。具有allow_failure: true 的作业始终被认为是成功的。
\ndelayed:将作业的执行延迟指定的持续时间。
\nnever: 不运行\xe2\x80\x99 作业。只能在规则部分或工作流程中使用:规则。
但如果您执行以下操作,它实际上与第一个示例相同:
\n - if: "$CI_PIPELINE_SOURCE == "merge_request_event"\n when: on_success\nRun Code Online (Sandbox Code Playgroud)\n这也假设when:未在作业主体中使用。
如果你的身体和规则中确实有when:,这会发生一些变化。
myjob:\n when: always\n rules:\n - if: ...\n when: on_success # this takes precedence if this rule matches\n - if: ... # uses the default "when:" if this rule matches\n\nRun Code Online (Sandbox Code Playgroud)\n在这种情况下,将 加入when:到规则中,当规则匹配时when:,规则中指定的内容将优先于when:作业正文中的设置。
在旧版本的 GitLab 中,不允许混合job:when:和,并且会导致错误。job:rules:when:
| 归档时间: |
|
| 查看次数: |
8888 次 |
| 最近记录: |