Search code examples
gitlabyamlpipeline

Why is my ignore command being ignored in my Gitlab pipeline yaml file?


Committing my code to its Gitlab repository triggers the pipeline (as it should). However, I have an instruction telling it not to run the verify job unless the commit message contains the phrase 'trigger ci'.

However, it runs the job even when the phrase isn't in the commit message. Where am I going wrong?

include:
  - '/gitlab-ci/includes.yml'
  - '/idt-test-stub/gitlab-ci.yml'

variables:
  ALPINE_VERSION: "3.16"
  NODE_VERSION: "14-alpine"
  ESLINT_CONFIG_PATH: "./.eslintrc.js"
  SOURCE_DIR: "."
  RULESET: MAVEN_CI
  BUILD_TYPE: MAVEN
  MVN_CLI_OPTS: "--batch-mode"
  MVN_OPTS: "-Dmaven.repo.local=.m2-local -f wiremock-java/pom.xml"
  MAVEN_IMAGE: "maven:3-jdk-11"

stages:
  - test
  - code-quality
  - code-test
  - code-analysis
  - verify
  - transform
  - application-build
  - image-build
  - move-container-tests
  - container-image-test
  - image-push

.branches: &branches
  only:
    - branches

todo-check:
  <<: *branches

shell-check:
  <<: *branches

docker-lint:
  <<: *branches

unit-test:
  <<: *branches
  artifacts:
    expire_in: 20 mins
    paths:
      - ./coverage

verify:
  only:
    variables:
      - $CI_COMMIT_MESSAGE =- /trigger ci/   
  <<: *branches
  stage: verify
  image: node:$NODE_VERSION
  script:
    - npm install
    - ./run-verify.sh
  tags:
    - docker-in-docker-privileged

Solution

  • The correct syntax to check against a regular expression pattern is =~ instead of =-.