一旦我将标记的提交推送到分支主控,我想触发管道。不过,我不确定它是否有效,因为到目前为止我还没有成功。
.gitlab-ci.yml
:
variables:
JEKYLL_ENV: production
LC_ALL: C.UTF-8
stages:
- publish
- release
# - deploy
pages:
stage: publish
image: ruby
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_COMMIT_TAG != ""
when: always
before_script:
- gem install bundler
- bundle install
script:
- bundle exec jekyll build -d public
artifacts:
paths:
- public
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_COMMIT_TAG != ""
when: always
script:
- echo 'running release job'
release:
name: 'Release $CI_COMMIT_TAG'
description: 'Created using gitlab-ci.yml. $EXTRA_DESCRIPTION'
tag_name: '$CI_COMMIT_TAG'
ref: '$CI_COMMIT_TAG'
artifacts:
paths:
- public
expire_in: 1 day
我尝试过的:
`- if: '$CI_COMMIT_TAG && $CI_COMMIT_BRANCH == "master"'`
尽管如此,最后一条规则根本不会触发管道。
您可以检查提交是否有标签
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_COMMIT_TAG != ""
when: manual
或者如果您的标签遵循
tag-1
、tag-2
等约定,请使用正则表达式模式
rules:
- if: $CI_COMMIT_BRANCH == "master" && $CI_COMMIT_TAG =~ /tag\-[0-9]/
when: manual
实际答案在已接受答案的评论中
此解决方案自
和CI_COMMIT_BRANCH
起不起作用 在任何给定的管道中具有互斥的可用性。如果CI_COMMIT_TAG
存在,这意味着它是一个标签管道并且CI_COMMIT_TAG
未定义。相反,如果CI_COMMIT_BRANCH
是 存在,CI_COMMIT_BRANCH
不得存在。这是因为,就 git 语义中,标签不属于任何分支,也不具有 与分支机构的任何关联。标签仅指向提交 SHA 可能存在于多个分支中,甚至根本没有分支。 – 赛特克CI_COMMIT_TAG