在 gitlab ci 中使用多个“工作流程”?

问题描述 投票:0回答:1

让我们想象一下,我想在 gitlab 中有 2 个不同的 CI 管道。第一个应该从任何分支上的每次推送开始,另一个仅在提交标题以部署结束时开始。

我如何意识到这一点?

所以我的想法:

.gitlab-ci.yml

stages:
  - pre
  - build


include:
  - local: ci/a.gitlab-ci.yml
  - local: ci/b.gitlab-ci.yml

a.gitlab-ci.yml

workflow:
  rules:
  # only triggered by "-deploy" at the end of commit 
    - if: $CI_COMMIT_TITLE == /-deploy$/ 

test-job1:
  stage: pre
  script:
    - echo "Workflow a runs pre."
  tags:
    - x86

test-job2:
  stage: build
  script:
    - echo "Workflow a runs build."
  tags:
    - x86

b.gitlab-ci.yml

workflow:
  rules:
  # only triggered if commit does not end with  "-deploy"  
    - if: $CI_COMMIT_TITLE =~ /-deploy$/ 

test-job1:
  stage: pre
  script:
    - echo "Workflow b runs pre."
  tags:
    - x86

test-job2:
  stage: build
  script:
    - echo "Workflow b runs build."
  tags:
    - x86
gitlab continuous-integration gitlab-ci
1个回答
9
投票

要达到您想要的效果,最好的选择是使用 include:rules:

 而不是 workflow:rules:

我相信你在正则表达式匹配规则中也可能有一个小错误。您可能希望在第一种情况下使用正则表达式匹配运算符(

=~

,即与模式匹配),在第二种情况下使用负匹配重新运算符(
!~
,即
not与模式匹配)。

include: - local: ci/a.gitlab-ci.yml rules: - if: $CI_COMMIT_TITLE =~ /-deploy$/ - local: ci/b.gitlab-ci.yml rules: - if: $CI_COMMIT_TITLE !~ /-deploy$/
然后从每个模板中删除 

workflow:rules:

© www.soinside.com 2019 - 2024. All rights reserved.