Запуск задания через GitHub API отменяет текущее задание - PullRequest
0 голосов
/ 20 февраля 2020

В нашем цикле коммитов есть два задания. Первый (build_and_test) создает наш проект iOS и запускает некоторые из наших модульных тестов. Второй (build_and_snapshot) создает наш проект iOS и запускает несколько более продолжительных тестов пользовательского интерфейса. Мы хотим, чтобы build_and_test запускался при каждом коммите, включая коммиты, сделанные в ветвях, а более продолжительный build_and_snapshot - только на мастере.

Однако мы также хотели бы иметь возможность при выполнении команды build_and_snapshot на ветке. Поэтому мы добавили действие GitHub, чтобы при добавлении следующего PR-комментария: /snapshot <branch_name> circleci запускает build_and_snapshot в ветке <branch_name>.

Это наш YAML-файл рабочего процесса:

name: Comment commands handler
on:
  issue_comment:
    types: [created]

jobs:
  snapshot:
    runs-on: macos-latest
    if: contains(github.event.comment.body, '/snapshot') && github.event.issue.pull_request
    steps:
      - name: Run snapshots job
        shell: bash
        run: BRANCH_NAME=${COMMENT_BODY#* } && curl -u our_circle_ci_api_key -d build_parameters[CIRCLE_JOB]=build_and_snapshot "https://circleci.com/api/v1.1/project/gh/project/repo/tree/${BRANCH_NAME}"
        env:
          COMMENT_BODY: ${{ github.event.comment.body }}

Это работает, но отменяет build_and_test, если работает. Я думаю, что это из-за настройки окружности, которая отменяет избыточные сборки. Есть ли способ обойти это, кроме отключения этой настройки? Нужно ли нам опрашивать и ждать, пока build_and_test не закончится?

1 Ответ

0 голосов
/ 22 февраля 2020

Любой из предложенных вами подходов сработает - хотя вы можете получить условие гонки, если опрашиваете из GitHub Actions, потому что многие будут работать в одно и то же время, и вполне вероятно, что два запускают сборку одновременно когда все заканчивается.

Отключение настройки избыточной сборки на CircleCI кажется лучшим выбором.

Кстати, способность действий GitHub действовать подобным образом (отменить избыточные действия) является крайне востребованной (отсутствующей) функцией.

...