Skip to main content
Skip to content

Устранение неполадок с обязательными проверками состояния

Устраните распространенные ошибки и разблокируйте слияние или отправку в защищенные ветви путем устранения неполадок, необходимых проверок состояния.

Кто может использовать эту функцию?

Защищенные ветви доступны в общедоступных репозиториях с GitHub Free и GitHub Free для организаций. Защищенные ветви также доступны в общедоступных и частных репозиториях с GitHub Pro, GitHub Team, GitHub Enterprise Cloudи GitHub Enterprise Server.

Используйте эти проверки, когда обязательные блоки проверки состояния объединяются или отправляется в защищенную ветвь. См . раздел AUTOTITLE.

  • Проверка состояния должна успешно завершиться в выбранном репозитории за последние семь дней.
  • Если проверка и состояние фиксации имеют одинаковое имя, оба должны передаваться при необходимости. См . раздел AUTOTITLE.
  • Если защита ветви требует, чтобы ваша ветвь была up-to-date, объединить или перебазировать базовую ветвь в свою ветвь. См. раздел [AUTOTITLE и Сведения о защищенных ветвях](/get-started/using-git/about-git-rebase).

Если необходимые проверки состояния не прошли, отправка в защищенную ветвь возвращает ошибку, аналогичную этой.

remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Required status check "ci-build" is failing

Примечание.

Запросы на вытягивание, которые являются актуальными и передают обязательная проверка состояния, можно объединить локально и отправить в защищенная ветвь. Это можно сделать, не выполняя проверки состояния самой фиксации слияния.

Требуется проверка, необходимая для успешного выполнения последней фиксации SHA

Проверьте следующее, если требуется проверка по-прежнему блокирует запрос на вытягивание.

  • Необходимые проверки должны пройти последнюю фиксацию SHA. Проверки из предыдущих фиксаций не соответствуют требованиям.
  • Состояния успешной проверки: successи skipped``neutral. См . раздел AUTOTITLE.

Конфликты между головной фиксацией и тестовой фиксацией слияния

Используйте флажок состояния запроса на вытягивание, чтобы определить, какая фиксация должна пройти.

Источник проверки состоянияЧто необходимо передатьЧто вы можете увидеть
Проверка фиксации слияния имеет состояниеТестовая фиксация слиянияShowing checks for the merge commit
Проверка фиксации слияния не имеет состоянияФиксация головыПроверяет наличие последней фиксации головы

См . раздел AUTOTITLE.

Проверки из некоторых заданий рабочего процесса не оцениваются

Выполнение GitHub Actions рабочего процесса может сообщать о проверках, которые не отображаются в разделе проверок запроса на вытягивание или удовлетворяют требуемым проверкам состояния в наборе правил ветви. Для проверки, созданные заданиями рабочих процессов для запроса на вытягивание, выполнение рабочего процесса должно активироваться одним из следующих событий:

  • push
  • pull_request
  • pull_request_review
  • pull_request_target
  • deployment
  • deployment_status

Например, если рабочий процесс активируется в головной ветви запроса на вытягивание, проверки, сообщаемые workflow_dispatch его заданиями, не отображаются в разделе проверок запроса на вытягивание. Даже если проверки передаются для фиксации головы, они не соответствуют требуемому состоянию проверки в наборе правил ветви.

Проверьте событие, активировающее выполнение рабочего процесса. Если рабочий процесс использует другое событие, обновите его on конфигурацию, чтобы использовать соответствующее событие для рабочего процесса, например pull_request. См . раздел AUTOTITLE.

Это ограничение применяется только к проверкам, созданным заданиями рабочих процессов, а не к проверкам, созданным внешним GitHub App.

Для очередей слияния требуется отдельное merge_group событие. Ознакомьтесь со сведениями о состоянии и GitHub Actions очередью слияния.

Обработка пропущенных, но обязательных проверок

ПричинаResultИсправление или проверка
Рабочий процесс пропускается путем фильтрации путей, фильтрации ветвей или сообщения фиксацииСвязанные проверки остаются в состоянии "Ожидание" и блокируют слияниеИзбегайте необходимости пропускать рабочие процессы.
Задание пропускается условнымЗадание сообщает "Успешно"См . раздел AUTOTITLE.
Задание зависит от неудачного заданияЗависимое задание пропускается и не может блокировать слияниеИспользуется always() для needs обязательных проверок, зависящих от других заданий. См . раздел AUTOTITLE.

Не следует использовать фильтрацию пути или ветви, чтобы пропустить выполнение рабочего процесса, если рабочий процесс необходим для передачи перед слиянием. Дополнительные сведения см. в разделе [AUTOTITLE и Пропуск запусков рабочих процессов](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets#require-workflows-to-pass-before-merging).

Пример

Для этого рабочего процесса требуется успешное build задание, но выполняется только при изменении файлов scriptsзапроса на вытягивание.

name: ci
on:
  pull_request:
    paths:
      - 'scripts/**'
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [12.x, 14.x, 16.x]
    steps:
    - uses: actions/checkout@v6
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v7
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test

Запрос на вытягивание, который изменяет только файл в корневом каталоге репозитория, не активирует этот рабочий процесс. Если build это необходимо, запрос на вытягивание блокируется с сообщением "Ожидание сообщения о состоянии".

Проверка состояния с GitHub Actions очередью слияния

Если для очереди слияния требуется GitHub Actions проверка, активируйте рабочий процесс с событием merge_group .

Примечание.

Если репозиторий использует GitHub Actions для выполнения обязательных проверок или если требуется рабочий процесс с помощью наборов правил организации на запросы на вытягивание в репозитории, необходимо обновить рабочие процессы, чтобы включить merge_group событие в качестве дополнительного триггера. В противном случае проверки состояния не будут активированы при добавлении запроса на вытягивание в очередь слияния. Слияние завершится ошибкой, так как обязательная проверка состояния не будет сообщаться. Событие merge_group отличается от pull_request событий и push событий.

Пример конфигурации триггера:

on:
  pull_request:
  merge_group:

См . раздел AUTOTITLE.

Обязательные проверки состояния из непредвиденных источников

Защищенная ветвь также может требовать проверку состояния от определенного GitHub App. Если вы видите сообщение, аналогичное приведенному ниже, убедитесь, что флажок, указанный в поле слияния, был установлен ожидаемым приложением.

Required status check "build" was not set by the expected GitHub App.