如何根据前一阶段的失败将作业设置为手动?

Jor*_*-El 1 gitlab-ci

在阶段之后我有一个管道。在最后两个阶段结束时,如下所示。

在此输入图像描述

Teardown 将从 kubernetes 中删除应用程序,destroy 将从 kubenretes 集群和其他资源整体删除。

我已设置自动并允许失败为真。

但是,如果拆卸阶段失败,我想将最后一个销毁阶段设置为手动。这样我就可以交叉检查并稍后恢复工作。如果拆卸成功通过,那么它应该自动完成。

怎么设置呢?

小智 6

因为,.gitlab-ci.yml 不允许规则when: on_failure同时when: manual存在和相同的作业规则。所以我使用了父子管道来解决这个问题。

\n

这是一个例子:

\n
    \n
  1. 创建一个清理作业模板,例如:
  2. \n
\n
# file name: cleanup_job_tmpl.yml\n\n.cleanup job tmpl:\n  script:\n    - echo "run cleanup job"\n\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 创建自动清理作业
  2. \n
\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"\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 创建手动清理作业
  2. \n
\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\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 最后是 .gitlab-ci.yml
  2. \n
\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\n
Run Code Online (Sandbox Code Playgroud)\n

teardown job:退出 10 时,将触发cleanup trigger manual作业,当我删除teardown job:退出 10 时,将触发cleanup trigger auto作业。

\n

我的 GitLab 存储库可以演示这个案例。

\n\n