当前位置: 首页 > 知识库问答 >
问题:

Gitlab CI儿童管道

邵宜年
2023-03-14

我对gitlab ci子管道有问题。需要在具有多个应用程序的repo中的每次提交后自动触发ci管道。需要配置以检测哪些文件夹/文件被修改,以便知道要触发哪个应用程序管道

结构示例

Main/
---- applicationsA/
-------- appA1/
-------- appA2/
-------- appA3/
---- applicationsB/
-------- appB1/
-------- appB2/
-------- appB3/

Main“.gitlab ci.yml”是:


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"是:


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”是:


stages:
  - build
  - test

build-appA2:
  stage: build
  script:
    - echo "Execute appA1 build!"

publish-appA2:
  stage: build
  script:
    - echo "Execute appA1 publish!"

这种配置的目的是,例如,当我在应用**中更改文件时,管道会检测到更改并生成应用**。

共有1个答案

洪照
2023-03-14

您可以使用带有全局模式的规则:更改,并且仅在特定应用文件夹中发生任何更改时运行特定作业:

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/**/*
 类似资料:
  • 昨天我在我的项目中添加了,现在当我离开并回到导航中的元素时,它会重新加载Sky,我得到 警告:儿童(…):遇到两个具有相同密钥的子项,。子密钥必须是唯一的;当两个子项共享密钥时,将只使用第一个子项。 (上面使用的数字50只是一个例子,它每次抛出这个错误~40次,都是不同的id) 这个问题似乎源于我的文件: 因为每次我进入另一个屏幕时,这个组件都会卸载,然后在我回来时重新安装。 当完成时,创建了一组

  • 本文向大家介绍儿童python练习实例,包括了儿童python练习实例的使用技巧和注意事项,需要的朋友参考一下 实例一: 题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列(只要百不等于十位并且不等于个位)。 实例(Python 2.0+) 实例二: 题目:企业发

  • 我有一个非常简单的功能组件,如下所示: 和另一个组成部分: 我不断发现以下错误: [ts]JSX元素类型“ReactNode”不是JSX元素的构造函数。类型“undefined”不可分配给类型“ElementClass”。[2605] 如何正确地键入此内容?

  • 有人知道我为什么会有这种行为吗?是我的代码出了bug还是什么问题?

  • 我对阿克卡很陌生,我有一个(希望)简单的问题。我有一个参与者需要重复执行某个小的子任务——也就是说,每次这个参与者收到消息时,它都必须执行N个子任务。这个子任务是我指定给儿童演员的。我的问题是,我是否应该为每个子任务创建一个新的子角色实例?或者我应该简单地产生一个孩子演员,并发送N条消息?在这种情况下,最好的做法是什么? 为了更好地说明我的问题,这里有两个简化的示例(在Java中-但希望对Scal

  • 我将winapi CreateWindowEx打包到一个简单的类中。由于每个窗口共享同一个wndProc(hwnd, msg, wparam, lparam),我将CreateWindowEx创建的每个窗口放入一个映射中以分发msg,如下所示: 每次销毁窗口或其父窗口时,请将其从地图中删除: 但是像按钮这样的东西不会收到WM_DESTROY。我打印了所有的味精WM_NOTIFY和WM_COMMAN