首页 > 解决方案 > Gitlab CI/CD 动态切换作业到手动模式

问题描述

有没有办法动态地将工作切换到手动模式(反之亦然)?

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

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

只是使用当前的语法,它可能是这样的:

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..."

标签: gitlab-cigitlab-ci-runner

解决方案


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

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 规则


推荐阅读