不要在从Gitlab问题创建新分支时触发构建

8
我在gitlab.com上使用Gitlab和问题跟踪器。 每次我有一个问题,我会在问题中创建一个新的分支,但这会触发CI中的新构建(流水线)。 我不想这样做,因为这个分支来自主分支,不需要构建。
我该怎么做?这是通过修改gitlab-ci.yml还是与存储库相关的配置实现的?

你有找到有效的解决方案吗?我也遇到了同样的问题,目前还没有好的修复方法。 - ateymour
4个回答

0

你可以通过使用 onlyexcept 参数在特定分支上运行构建的某些步骤。请参考 https://docs.gitlab.com/ee/ci/yaml/#only-and-except-complex

例如,在除了问题分支以外的所有分支运行 Java 构建:

java-build:
  stage: build
  except:
   - /^issue-.*$/
  script:
    - mvn -U -e install
  image: maven:3.5-jdk-8

限制构建仅限于主分支和发布分支:

java-build:
  stage: build
  only:
    - master
    - /^RELEASE-.*$/
  script:
    - mvn -U -e install
  image: maven:3.5-jdk-8

0

根据提交信息,我们可以避免在GitLab CI/CD流水线上为新创建的分支构建

Build Branch(master):
  stage: build
  only:
    refs:
      - master
    variables:
      - $CI_COMMIT_MESSAGE =~ /^\[master\].*$/
  script:
    - echo "master branch"
  #  - sleep 60 | echo "hello master"
  # when: delayed
  # start_in: 3 minutes
  interruptible: true

Build Branch(release):
  stage: build
  only:
    refs:
      - /^build_.*$/
    variables:
      - $CI_COMMIT_MESSAGE =~ /^\[build\].*$/
  script:
    - echo "release branch"
  #  - sleep 60 | echo "hello release"
  # when: delayed
  # start_in: 3 minutes
  interruptible: true

当提交信息以 [master] 或 [build] 开头时,分支将被触发。


0

如在这个GitLab问题中提议的那样,您可以通过以下配置来避免此行为:.gitlab-ci.yml

workflow:
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      when: always
    - if: $CI_COMMIT_BRANCH
      changes:
        paths: ['*']
        compare_to: refs/heads/master
      when: always

test:
  script: exit 0

0
感谢KrysGo提到这个问题,真的很有帮助。
我仔细阅读了整个问题页面,发现一个更好的工作配置,正如你可以看到,有人在问题的下方发布了一个解决了边缘情况的方案,具体如下:
workflow:
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      when: always
    - if: $CI_COMMIT_BRANCH
      changes:
        paths:
        - '*'
        - '**/*'
        compare_to: refs/heads/main
      when: always

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接