GitLab CI子渠道 [英] Gitlab CI Child pipeline
本文介绍了GitLab CI子渠道的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我对GitLab ci子管道有问题。 需要在回购中有多个应用程序的每次提交后自动触发CI管道。需要配置以检测哪些文件夹/文件被修改,以便知道要触发哪个应用程序管道
结构示例
Main/
---- applicationsA/
-------- appA1/
-------- appA2/
-------- appA3/
---- applicationsB/
-------- appB1/
-------- appB2/
-------- appB3/
Main";.gitlab-ci.yml";is:
workflow:
rules:
- if: ‘$CI_PIPELINE_SOURE == "web"’
variables:
APPNAME: $APPNAME
stages:
- child-pipelines
appA1:
stage: child-pipelines
trigger:
include:
- local: applicationA/appA1/gitlab-ci.yml
strategy: depend
rules:
- if: $APPNAME == "appA1" && $CI_PIPELINE_SOURE == "web"
appA2:
stage: child-pipelines
trigger:
include:
- local: applicationA/appA2/gitlab-ci.yml
strategy: depend
rules:
- if: $APPNAME == "appA1" && $CI_PIPELINE_SOURE == "web"
...
appA1";.gitlab-ci.yml";is:
stages:
- build
- test
build-appA1:
stage: build
script:
- echo "Execute appA1 build!"
publish-appA1:
stage: build
script:
- echo "Execute appA1 publish!"
appA2";.gitlab-ci.yml";is:
stages:
- build
- test
build-appA2:
stage: build
script:
- echo "Execute appA1 build!"
publish-appA2:
stage: build
script:
- echo "Execute appA1 publish!"
此配置的目的是,例如,当我更改应用程序内的文件**时,管道会检测到更改并构建应用程序**。
推荐答案
您可以将rules:changes与GLOB模式一起使用,并且仅在特定应用程序文件夹中发生变化时运行特定作业:
appA1:
stage: child-pipelines
trigger:
include:
- local: applicationA/appA1/gitlab-ci.yml
strategy: depend
rules:
- if: '$APPNAME == "appA1" && $CI_PIPELINE_SOURE == "web"'
changes:
- Main/applicationsA/appA1/**/*
这篇关于GitLab CI子渠道的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文