Describe your question in as much detail as possible:
Is it possible at all to use the
parallel:matrix configuration to manipulate the
changes:compare_to feature in the GitLab CI configuration? I have a parallel:matrix overriding and running a job multiple times, but I want to run those matrix items conditionally - do I need a significant overhaul?
What are you seeing, and how does that differ from what you expect to see?
Currently all plan jobs for each three of those run automatically. I want to ensure that when I only change the
aws/dev/global/rds folder, I only run the matrix job indicated from that change using the
changes:compare_to feature to the main branch.
Instead of all three of those folders running, if I only change a Terraform file in the
rds folder, it should only trigger the matrix job that matches.
What version are you on? Are you using self-managed or GitLab.com?
Self managed GitLab running GitLab Enterprise Edition 15.11.11-ee.
Add the CI configuration from
.gitlab-ci.yml and other configuration if relevant (e.g. docker-compose.yml)
The following CI is what I have in a shared template library (simplified for ease of reading)
.tf-base: before_script: ... specific logic here for auth... ... other variable configuration ... # Run 'terraform init' terraform init -upgrade -input=false tf-plan: extends: .tf-base rules: - if: $CI_COMMIT_TITLE =~ /^release:/ when: never - if: $CI_COMMIT_TAG when: never - if: '$ENABLE_TF_PLAN != "true"' when: never - if: $CI_COMMIT_BRANCH changes: compare_to: 'refs/heads/$MAIN_REF' paths: - '*/$TF_DIRS/**/*' - when: on_success
Below here is the actual implementation of the code above being used in a repository with the parallel:matrix field so that I can dynamically run my Terraform across multiple providers and folder structures.
.dirs-aws: &dirs-aws - "dev/global/rds" - "dev/global/iam" - "dev/global/cluster" ... tf-plan: tags: - IaC parallel: matrix: - PROVIDER: aws TF_DIRS: *dirs-aws ...
What troubleshooting steps have you already taken? Can you link to any docs or other resources so we know where you have been?
I’ve tried a variety of combos with how to reference only different variables - I’m not sure the optimal approach on how to manage the paths and the rules so that I can reference the important pieces (is it even possible to reference dynamically set variables in the rules section of CI?)
I’ve looked through as many google searches on a variety of keywords relating to the topic as well as the open and closed issues on GitLab
THANK YOU so much for going through this - I would appreciate any suggestions or help here!