在Gitlab中如何在某些情况下手动以及自动运行管道

时间:2020-10-14 18:21:34

标签: gitlab gitlab-ci

我一直在检查Gitlab工作流程,目前具有类似的设置:

workflow:
  rules:
    - if: $CI_MERGE_REQUEST_ID
    - if: $CI_COMMIT_TAG
    - if: $CI_COMMIT_BRANCH == "master"

这使我可以自动或手动触发管道。但是,我希望作业可以手动触发以及在某些情况下自动启动,例如:

  • 当PR合并为主控时
  • 手动触发

我尝试使用以下情况:工作流规则下的手动标记,但根据Gitlab而言,这不是有效的配置。

有什么办法可以做到这一点?

完整设置如下:

image: "hseeberger/scala-sbt:11.0.6_1.3.10_2.11.12"

services:
  - mysql:latest


connect:
  stage: test
  image: mysql
  script:
    - echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"

workflow:
  rules:
    - if: $CI_MERGE_REQUEST_ID
    - if: $CI_COMMIT_TAG
    - if: $CI_COMMIT_BRANCH == "master"


stages:
  - test
  - release

test:
  script:
    - sbt scalafmtCheckAll test-ci
    - sbt it:test

docker:image:
  stage: release
  image: "hseeberger/scala-sbt:11.0.6_1.3.10_2.11.12"
  

  script:
    - sbt docker:publishLocal
  only:
    - master

1 个答案:

答案 0 :(得分:0)

我假设您想在发布阶段运行手动作业,那么您的docker:image部分将如下所示:

docker:image:
  stage: release
  image: "hseeberger/scala-sbt:11.0.6_1.3.10_2.11.12"  
  script:
    - sbt docker:publishLocal
  rules:
    - if: $CI_COMMIT_BRANCH == 'master'
      when: manual

所有作业应自动启动,并且只有docker:image应该仅在手动操作下运行