例如,我的管道包含以下作业:
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
当然,没有人(包括我自己)感到惊讶,这不起作用。
看到你的帖子正在寻找类似的情况。
在这里,我向您发布了我为使其发挥作用所做的工作,希望对您的情况有所帮助:
...
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) 创建特定作业。
希望有帮助!