如何将gitlab ci中的作业限制为与模式匹配的标记?

时间:2017-05-23 19:29:45

标签: gitlab gitlab-ci

我希望每次推送匹配模式的标记时都能触发部署到特殊服务器。

我使用以下作业定义:

# ...
deploy to stage:
  image: ruby:2.2
  stage: deploy
  environment:
    name: foo-bar
  script:
    - apt-get update -yq
    - apt-get install -y ruby-dev
    - gem install dpl
#    - ...
  only:
    - tags

现在我的问题是:如何将此限制为具有特定名称的标签,例如以" V"开头,以便我可以推送标签" V1.0.0&#34 ;并且有一定的工作在运行?

3 个答案:

答案 0 :(得分:5)

Only accepts regex patterns因此,对于您的用例,它将是:

only:
  - /^V.*$/
except:
  - branches
  - triggers

答案 1 :(得分:2)

only / except are now being deprecated 开始,您现在应该更喜欢 rules 关键字

事情变得非常简单,下面是使用规则的等效项:

rules:
  # Execute only when tagged starting with V followed by a digit
  - if: $CI_COMMIT_TAG =~ /^V\d.*/

答案 2 :(得分:1)

最好的方法是通过与您的模式匹配的Gitlab CI / CD变量进行过滤

only
  variables:
    - $CI_COMMIT_TAG =~ /^my-custom-tag-prefix-.*/

documentation说:

  • CI_COMMIT_TAG:提交标记名称。仅在构建标签时显示。