Gitlab CI/CD 动态切换作业到手动模式

Gitlab CI/CD switching job to manual mode dynamically

有什么方法可以动态地将作业切换到手动模式(反之亦然)?

因此,gitlab-ci.yml 文件中没有 when: manual,而是根据任何动态检查将其切换为手动(或相反)。

示例:缺少环境变量的配置,阻止它成为 运行,但如果用户在启动时设置变量,则可以稍后 运行 它。

只是玩弄当前的语法,它可能像:

myjob:
   stage: deploy
   environment: proj-shared-env-qa
   script:
      - echo "Deploying $my_var..."
   when: manual && [[ ! $my_var ]] # Using shell syntax just as an example of the condition

而不是失败:

myjob:
   stage: deploy
   environment: proj-shared-env-qa
   script:
      - [[ ! $my_var ]] && echo "my_var is undefined" && exit 1
      - echo "Deploying $my_var..."

您可以尝试使用 rules 根据您在作业 script 中设置的变量设置条件。

myjob:
   stage: deploy
   environment: proj-shared-env-qa
   script:
      - export my_var
   rules:
     - if: $my_var
       when: manual

https://docs.gitlab.com/ee/ci/yaml/#rules-attributes

如果使用下面的示例,您可以使用规则

myjob:
   stage: deploy
   environment: proj-shared-env-qa
   script:
      - echo "Deploying $my_var..."
   rules:
     - if: $my_var
       when: on_success
     - if: !$my_var
       when: manual

因此,如果设置了 var,它将自动 运行。如果未设置,则将变为手动过程

参考:Gitlab Rules