Skip to content

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.

Edited by Jennifer Li

Merge request reports