Search code examples
gitlabyamlgitlab-ci

Cannot get !reference to work in .gitlab-ci.yaml


I am working with GitLab 14.6.2-ee.

I am trying to use the YAML reference feature to re-use code snippets in my GitLab configuration files. I've boiled it down to what I think is the simplest use case, but cannot get the file to validate.

.gitlab-ci.yaml:

...
.hidden:
  .update-static-site:
    rules:
        if: $CI_COMMIT_BRANCH =~ /(^develop$|^master$|^staging-.*)/

...
trigger-downstream-pipeline:
  stage: .post
  trigger:
    project: project-x/project-x-manifest
    branch: master
  variables:
    SOURCE_COMMIT_SHA: $CI_COMMIT_SHA
    SOURCE_COMMIT_REF_NAME: $CI_COMMIT_REF_NAME
    APP_NAME: project-x
  needs:
    - job: push-project-x-to-harbor
      artifacts: false
  rules:
    - !reference [.hidden, .update-static-site, rules]

I cannot get the !reference line to validate. I keep getting Unresolved tag: !reference.

I found a SO posting (GitLab CI - Reuse rules with !reference tag) that addresses exactly what I'm trying to do, but it does not work.


Solution

  • So, the main problem was that I needed to change my VS Code config to accept the YAML reference tags. Once that was done, no more validation errors.

    When I committed the changes and watched the pipeline, there were no issues.