CircleCI:跳过整个工作流程

4

基本上,我想跳过构建,如果它不是拉取请求或特定分支,但是如果失败了,我似乎无法跳过作业或工作流的一部分,到目前为止,问题在于circleci step halt在我的流水线中没有任何作用,示例配置如下:

version: 2.1

orbs:
  hello: circleci/hello-build@0.0.5

jobs:
  build:
    docker:
      - image: docker:17.05.0-ce-git
    steps:
      - checkout
      - setup_remote_docker
      - run:
          command: |
            if [[ $(echo "$CIRCLE_PULL_REQUEST $CIRCLE_PULL_REQUESTS" | grep -c "pull") -gt 0 ]]; then
              echo "Do stuff if it's a PR"
            else
              echo "Not a PR, Skipping."
              circleci step halt # does nothing
              circleci-agent step halt # does nothing
              exit 0
            fi

workflows:
  "Hello Workflow":
    jobs:
      - hello/hello-build:
          requires:
            - build
          filters:
            branches:
              only:
                - testing
                - /^(?!pull\/).*$/
            tags:
              only:
                - /^pull\/.*$/
      - build:
          filters:
            branches:
              only:
                - testing
                - /^(?!pull\/).*$/
            tags:
              only:
                - /^pull\/.*$/

这并不会失败,并且在拉取请求上可以工作,但是无论如何都会执行hello/hello-build,尽管有circleci step halt命令。

感谢任何帮助!

1个回答

4

在他们的论坛中创建一个帖子后,以下是可行的方法:https://discuss.circleci.com/t/does-circleci-step-halt-works-with-version-2-1/36674/4

进入账户设置->个人API令牌->新建令牌。一旦你获得了令牌,就可以进入项目并创建一个新的环境变量,例如CIRCLE_TOKEN,并将其保存在那里。

然后在config.yml中运行类似于这样的命令以取消当前工作流:

curl -X POST https://circleci.com/api/v2/workflow/${CIRCLE_WORKFLOW_ID}/cancel -H 'Accept: application/json' -u '${CIRCLE_TOKEN}:'

然后你会看到像这样的东西: enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接