CircleCI: пропустить весь рабочий процесс

По сути, я пытаюсь пропустить сборку, если это не запрос на вытягивание или определенную ветку, однако, похоже, я не могу пропустить задание или часть рабочего процесса, если это не удается, пока проблема в том, что circleci step halt ничего не делает в моих пайплайнах, пример конфига здесь:

version: 2.1

orbs:
  hello: circleci/[email protected]

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.

Любая помощь будет оценена, спасибо!


person kainlite    schedule 13.07.2020    source источник


Ответы (1)


После создания темы на их форумах сработало следующее: https://discuss.circleci.com/t/does-circleci-step-halt-works-with-version-2-1/36674/4

Заходим в настройки аккаунта -> Токены Personal API -> Новый токен. Получив токен, перейдите в проект и создайте новую переменную среды, например CIRCLE_TOKEN, и сохраните ее там.

Затем в config.yml вы можете запустить что-то вроде этого, чтобы отменить текущий рабочий процесс:

curl -X POST https://circleci.com/api/v2/workflow/$%7BCIRCLE_WORKFLOW_ID%7D/cancel -H 'Принять: application/json' -u '${CIRCLE_TOKEN}:'

Затем вы увидите что-то вроде: введите здесь описание изображения

person kainlite    schedule 02.10.2020