基于分支运行不同的CI管道文件

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

我有两个不同的 CI 文件用于开发和测试环境。我需要两个单独的文件,因为我无法控制脚本,并且由于 gitlab 的变量嵌套问题。这是我当前的 .gitlab-ci.yml:

include:
    - project: marketing/itm/icbf/feature/icbf-mfe-prompt
      ref: Development
      file: .ci/ci.dev.yml
      if: $CI_COMMIT_BRANCH == "Development"

    - project: marketing/itm/icbf/feature/icbf-mfe-prompt
      ref: main
      file: .ci/ci.test.yml
      if: $CI_COMMIT_BRANCH == "main"

但是,它始终运行最新的条目,其中包含 ci.test.yml 文件。我试过:

include:
  - project: marketing/itm/icbf/feature/icbf-mfe-prompt
    ref: Development
    file: .ci/ci.dev.yml

  - project: marketing/itm/icbf/feature/icbf-mfe-prompt
    ref: main
    file: .ci/ci.test.yml

stages:
  - build

# Build job that runs everything inside ci.dev.yml
build:
  stage: build
  script:
    - .ci/ci.dev.yml
  only:
    - Development  # Run only on the Development branch

这也不太有效。它仍然运行最新导入的文件。如何配置此文件,以便它基于分支运行 ci.dev 或 ci.test,而不是始终运行最新的导入?

gitlab gitlab-ci
1个回答
0
投票

这是一种略有不同的方法,但您可以使用该 CI 文件作为调度程序,而不是直接导入文件,因此您可以更好地了解您应该指的内容

ref
。这是一个例子:

stages: dispatch

dispatch-pipeline:
  stage: dispatch
  trigger:
    strategy: depend
    project: marketing/itm/icbf/feature/icbf-mfe-prompt #Can be moved to a variable too
    ref: $BRANCH
    file: $CI_FILE
    forward:
      yaml_variables: true
      pipeline_variables: true
  rules:
    - if: $CI_COMMIT_BRANCH == "Development" #Runs whole content of CI for Development
      variables:
        BRANCH: $CI_COMMIT_BRANCH
        CI_FILE: .ci/ci.dev.yml

    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH #Runs whole content of CI for main
      variables:
        BRANCH : $CI_DEFAULT_BRANCH
        CI_FILE: .ci/ci.test.yml

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