Varkal
Varkal

Reputation: 1378

In Gitlab CI, cancel pipeline on master when I push a tag

I have this .gitlab-ci.yml file:

    image: node:latest
    
    stages:
      - build
      - test
      - publish
    
    cache:
      key:
        files:
          - package.json
          - package-lock.json
      paths:
        - node_modules
    
    build:
      stage: build
      script:
        - echo -e "//my.private.repo.com/:_authToken=${NPM_TOKEN}\n$(cat .npmrc)">.npmrc
        - npm install
        - npm run build
      artifacts:
        paths:
          - node_modules
          - .npmrc
    
    test:
      stage: test
      script:
        - npm test
    
    publish:
      stage: publish
      script:
        - npm publish
      only:
        - tags

With this configuration, when I push a simple commit, everything is ok : build + test as expected.

But, when I push tag (created here with npm version, two pipeline are created : 1 for the commit, and 1 for the tag. So, build and tests are executed twice.

What can I do to prevent this behavior, and have the tag pipeline to "cancel" the commit pipeline

Upvotes: 1

Views: 858

Answers (1)

Vladimir Stanciu
Vladimir Stanciu

Reputation: 1536

You could have different jobs for when you push a simple commit or tag, and use only and except keywords to differentiate between the cases, otherwise this is the correct behaviour considered by GitLab. You can see the discussion around a closed issue here.

Upvotes: 1

Related Questions