GitLab CI子渠道 [英] Gitlab CI Child pipeline

查看:0
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆