在阶段之后我有一个管道。在最后两个阶段结束时,如下所示。
Teardown 将从 kubernetes 中删除应用程序,destroy 将从 kubenretes 集群和其他资源整体删除。
我已设置自动并允许失败为真。
但是,如果拆卸阶段失败,我想将最后一个销毁阶段设置为手动。这样我就可以交叉检查并稍后恢复工作。如果拆卸成功通过,那么它应该自动完成。
怎么设置呢?
小智 6
因为,.gitlab-ci.yml 不允许规则when: on_failure同时when: manual存在和相同的作业规则。所以我使用了父子管道来解决这个问题。
这是一个例子:
\n# file name: cleanup_job_tmpl.yml\n\n.cleanup job tmpl:\n script:\n - echo "run cleanup job"\n\nRun Code Online (Sandbox Code Playgroud)\n# file name: cleanup_auto.yml\n\ninclude: cleanup_job_tmpl.yml\n\ncleanup job auto:\n extends: .cleanup job tmpl\n before_script:\n - echo "auto run job"\nRun Code Online (Sandbox Code Playgroud)\n# file name: cleanup_manual.yml\n\ninclude: cleanup_job_tmpl.yml\n\ncleanup job manual:\n extends: .cleanup job tmpl\n when: manual\n before_script:\n - echo "manual run job"\n\nRun Code Online (Sandbox Code Playgroud)\n\nstages:\n - "teardown"\n - "cleanup"\n\ndefault:\n image: ubuntu:20.04\n\nteardown job:\n stage: teardown\n script:\n - echo "run teardown job and exit 10"\n - exit 10\n artifacts:\n reports:\n dotenv: cleanup.env \n\ncleanup trigger auto:\n stage: cleanup\n when: on_success #(default on_success)\n trigger:\n include: cleanup_auto.yml\n\ncleanup trigger manual:\n stage: cleanup\n when: on_failure\n trigger:\n include: cleanup_manual.yml\n\nRun Code Online (Sandbox Code Playgroud)\n当teardown job:退出 10 时,将触发cleanup trigger manual作业,当我删除teardown job:退出 10 时,将触发cleanup trigger auto作业。
我的 GitLab 存储库可以演示这个案例。
\n| 归档时间: |
|
| 查看次数: |
1674 次 |
| 最近记录: |