Match compile-production-assets and build-assets-image rules
What does this MR do and why?
Resolves broken CI config mentioned in !125597 (comment 1460887270)
'trigger-omnibus-env' job needs 'compile-production-assets' job, but 'compile-production-assets' is not in any previous stage
'build-assets-image' job needs 'compile-production-assets' job, but 'compile-production-assets' is not in any previous stage
'build-assets-image as-if-foss' job needs 'compile-production-assets as-if-foss' job, but 'compile-production-assets as-if-foss' is not in any previous stage
This tells me that compile-production-assets
is required by trigger-omnibus-env
and build-assets-image
. but the rules do not match resulting in the compile-production-assets
job failed to be created.
Job | Rule | contains rules to support .qa:rules:package-and-test ? |
---|---|---|
trigger-omnibus-env |
.qa:rules:package-and-test-ee code
|
yes |
compile-production-assets |
.frontend:rules:compile-production-assets , code
|
no |
build-assets-image |
.build-images:rules:build-assets-image , code
|
yes |
build-assets-image as-if-foss |
.build-images:rules:build-assets-image-as-if-foss code
|
yes |
I noticed the rule for creating compile-production-assets
is missing the conditions to support .qa:rules:package-and-test
, but they are present in the .build-images:rules:build-assets-image
rule as seen in https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/rules.gitlab-ci.yml#L959-972,
.build-images:rules:build-assets-image:
rules:
- <<: *if-not-canonical-namespace
when: never
- <<: *if-merge-request-labels-pipeline-expedite
when: never
- <<: *if-merge-request-targeting-stable-branch
changes: *setup-test-env-patterns
- <<: *if-ruby2-branch
- <<: *if-merge-request-labels-run-review-app
- <<: *if-auto-deploy-branches
- <<: *if-default-refs
changes: *ci-build-images-patterns
- <<: *if-default-refs
changes: *code-qa-patterns
# Rules to support .qa:rules:package-and-test <------------ HERE ON
- <<: *if-default-branch-schedule-nightly
- <<: *if-merge-request
changes: *dependency-patterns
- <<: *if-merge-request-labels-run-all-e2e
- <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
changes: *feature-flag-development-config-patterns
- <<: *if-merge-request
changes: *feature-flag-development-config-patterns
- <<: *if-merge-request
changes: *nodejs-patterns
- <<: *if-merge-request
changes: *ci-qa-patterns
- <<: *if-force-ci
Suggesting that conditions under Rules to support .qa:rules:package-and-test
will result in creating trigger-omnibus-env
, build-assets-image
, build-assets-image as-if-foss
without compile-production-assets
or compile-production-assets as-if-foss
.
To fix the issue, I'm copying these conditions over to .frontend:rules:compile-production-assets
, making sure .build-images:rules:build-assets-image
and .frontend:rules:compile-production-assets
match.
The result of the fix is tested in !125631 (closed), the MR was a duplicate of !125597 (merged), except it's created against this fix branch instead of master. We can see that the MR pipeline is successfully created with no more yaml error.
Screenshots or screen recordings
Screenshots are required for UI changes, and strongly recommended for all other merge requests.
Before | After |
---|---|
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.