我在gitlab.com上使用Gitlab和问题跟踪器。
每次我有一个问题,我会在问题中创建一个新的分支,但这会触发CI中的新构建(流水线)。
我不想这样做,因为这个分支来自主分支,不需要构建。
我该怎么做?这是通过修改gitlab-ci.yml还是与存储库相关的配置实现的?
我该怎么做?这是通过修改gitlab-ci.yml还是与存储库相关的配置实现的?
你可以通过使用 only
和 except
参数在特定分支上运行构建的某些步骤。请参考 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
根据提交信息,我们可以避免在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] 开头时,分支将被触发。
如在这个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
workflow:
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: always
- if: $CI_COMMIT_BRANCH
changes:
paths:
- '*'
- '**/*'
compare_to: refs/heads/main
when: always