Warm tip: This article is reproduced from serverfault.com, please click

node.js-推送标签会触发CI / CD循环

(node.js - Pushing tags triggers CI/CD loop)

发布于 2020-11-12 16:52:25

我使用CircleCI for CI / CD,最近想开始将发布内容标记为主要内容。这是我的config.yml

version: 2.1
orbs:
  node: circleci/node@1.1.6

jobs:
  build:
    executor:
      name: node/default
    steps:
      - checkout
      - node/with-cache:
          steps:
            - run: git pull
            - run: npm install standard-version
            - run: npm run release
            - run: git push --follow-tags origin master
      - node/with-cache:
         steps:
            - run: echo 'deploying master branch'

当然,这会触发无休止的循环,因为它会创建一个触发CircleCI的新推送...我读到你可以通过添加[ci skip]来跳过提交消息中的构建,但是push标记不提供该选项。

我该如何解决?我希望在发布新版本时自动标记语义版本...我能以某种方式解决这个问题吗?

我正在使用standard-version标记和更新package.json。

任何帮助将不胜感激

Questioner
Kmonassar
Viewed
11
Kmonassar 2020-11-30 20:58:46

解决的方法是对我的config.yml进行以下更改:

version: 2.1
orbs:
  node: circleci/node@1.1.6

jobs:
  build:
    executor:
      name: node/default
    steps:
      - checkout
      - node/with-cache:
          steps:
            - checkout
            - run: npm install
            - run: npm run test
            - run: npx semantic-release
      - node/with-cache:
         steps:
            - run: echo 'deploying master branch'
            - run: ssh -v -o "StrictHostKeyChecking no" user@xxxx.xxx "cd ~/projects/xxx; git pull --rebase; ./publish.sh"

workflows:
  version: 2
  build_project:
    jobs: 
      - build:
          filters:
            branches:
              only: master 

当使用“-run:npx语义释放”来执行此操作时,版本增加步骤将自动递增,并使用[skip ci]标记提交,因此它不会循环。