簡體   English   中英

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

[英]Use multiple 'workflows' in gitlab ci?

讓我們想象一下,我想在 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

為了達到你想要的效果,你最好的辦法是使用include:rules:而不是workflow:rules:

我相信您在正則表達式匹配規則中也可能有一個小錯誤。 您可能希望在第一種情況下使用正則表達式匹配運算符( =~即匹配模式),在第二種情況下使用否定匹配重新運算符( !~即與模式匹配)。

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:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM