根据分支名称在 Gitlab CI 中跳过作业

时间:2021-05-14 19:27:19

标签: gitlab gitlab-ci

目前,我在 Gitlab 中的构建和测试作业需要一段时间,对于不需要构建的特定更改(例如配置文件),我想跳过它们。我并不总是知道这些是什么文件,所以我不想使用 rules:changes。我试图通过将我的分支命名为“skip_build”并在合并到 master 后直接进入部署步骤来做到这一点。由于我的设置需要成功构建才能合并,因此我添加了一个什么都不做的虚拟构建步骤。我面临的问题是,一旦分支合并到 master,我就不能再依赖分支名称来跳过构建和测试步骤。到目前为止,这是我的配置:

build:
  image: myimage
  stage: build
  script:
    - build stuff
  rules:
    - if: '$CI_COMMIT_BRANCH == "skip_build"'
      when: never
    - if: '$CI_MERGE_REQUEST_EVENT_TYPE == "detached"'
      when: never
    - when: always

dummy-build:
  image: busybox
  stage: build
  script:
    - echo "do nothing"
  rules:
    - if: '$CI_COMMIT_BRANCH == "skip_build"'

test:
  image: myimage
  stage: test
  script:
    - test stuff
  rules:
    - if: '$CI_COMMIT_BRANCH == "skip_build"'
      when: never
    - if: '$CI_COMMIT_REF_NAME == "master"'
      when: on_success
  allow_failure: false

当我从分支创建 MR 时,这很好用,但是一旦我将它合并到 master 中,我相信 CI_COMMIT_BRANCH 现在是“master”,并且构建和测试步骤都会在那个管道。有没有办法在合并之前引用分支的名称,或者可能是另一种完全完成此操作的方法,而不使用分支名称?

0 个答案:

没有答案