CircleCI:跳过整个工作流程

时间:2020-07-13 18:12:34

标签: circleci circleci-2.0 circleci-workflows

基本上,我试图跳过构建,如果不是 请求请求或某个分支,但是如果出现以下情况,我似乎无法跳过工作或工作流程的一部分这失败了,到目前为止,问题是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 个答案:

答案 0 :(得分:1)

在他们的论坛中创建话题后,该方法有效: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