在 Gitlab CI 管道中,如何有条件地并行运行作业?

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

例如,我的管道包含以下作业:

sast-container:
  <<: *branches
  allow_failure: true
  parallel:
    matrix:
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/address-check-stub
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/manual-service-stub
      - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/employment-record-stub

当且仅当影响它们的代码发生更改时,我才需要矩阵中的每个作业。

我的想法是这样的:

sast-container:
  <<: *branches
  allow_failure: true
  parallel:
    matrix:
      only:
        changes:
          - stub-services/address-check-stub      
            - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/address-check-stub
      only:
        changes:
          - stub-services/address-check-stub  
            - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/manual-service-stub
      only:
        changes:
          - stub-services/address-check-stub  
            - CI_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE/employment-record-stub

当然,没有人(包括我自己)感到惊讶,这不起作用。

gitlab-ci pipeline
1个回答
0
投票

看到你的帖子正在寻找类似的情况。

在这里,我向您发布了我为使其发挥作用所做的工作,希望对您的情况有所帮助:

...
terraform format:
  stage: validate
  script:
    - gitlab-terraform fmt
  parallel:
    matrix:
      - TARGET: test
      - TARGET: qa
  environment:
    name: $TARGET
    action: verify
  rules:
    - changes:
        - terraform/$TARGET/**/*
...

使用该代码,仅当 terraform/$TARGET/**/* 文件夹包含修改时,我才设法为给定的 env(TARGET) 创建特定作业。

希望有帮助!

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