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

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

Используйте эти проверки, когда обязательные блоки проверки состояния объединяются или отправляется в защищенную ветвь. См [. раздел AUTOTITLE](/ru/pull-requests/reference/status-checks).

* Проверка состояния должна успешно завершиться в выбранном репозитории за последние семь дней.
* Если проверка и состояние фиксации имеют одинаковое имя, оба должны передаваться при необходимости. См [. раздел AUTOTITLE](/ru/rest/checks).
* Если защита ветви требует, чтобы ваша ветвь была up-to-date, объединить или перебазировать базовую ветвь в свою ветвь. См. раздел \[AUTOTITLE и [Сведения о защищенных ветвях](/ru/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging)]\(/get-started/using-git/about-git-rebase).

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

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

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

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

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

* Необходимые проверки должны пройти последнюю фиксацию SHA. Проверки из предыдущих фиксаций не соответствуют требованиям.
* Состояния успешной проверки: `success`и `skipped``neutral`. См [. раздел AUTOTITLE](/ru/pull-requests/reference/status-checks).

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

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

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

См [. раздел AUTOTITLE](/ru/rest/pulls/pulls#get-a-pull-request).

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

| Причина                                                                                                                                                                                                                                                                                                                                                                                                    | Result                                                                 | Исправление или проверка                                                                                                                                                                                           |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Рабочий процесс пропускается путем [фильтрации путей](/ru/actions/reference/workflows-and-actions/workflow-syntax#onpushpull_requestpull_request_targetpathspaths-ignore), [фильтрации ветвей](/ru/actions/reference/workflows-and-actions/workflow-syntax#onpull_requestpull_request_targetbranchesbranches-ignore) или [сообщения фиксации](/ru/actions/how-tos/manage-workflow-runs/skip-workflow-runs) | Связанные проверки остаются в состоянии "Ожидание" и блокируют слияние | Избегайте необходимости пропускать рабочие процессы.                                                                                                                                                               |
| Задание пропускается условным                                                                                                                                                                                                                                                                                                                                                                              | Задание сообщает "Успешно"                                             | См [. раздел AUTOTITLE](/ru/actions/how-tos/write-workflows/choose-when-workflows-run/control-jobs-with-conditions).                                                                                               |
| Задание зависит от неудачного задания                                                                                                                                                                                                                                                                                                                                                                      | Зависимое задание пропускается и не может блокировать слияние          | Используется `always()` для `needs` обязательных проверок, зависящих от других заданий. См [. раздел AUTOTITLE](/ru/actions/how-tos/write-workflows/choose-what-workflows-do/use-jobs#defining-prerequisite-jobs). |

### Пример

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

```yaml
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@v4
      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` .

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

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

```yaml
on:
  pull_request:
  merge_group:
```

См [. раздел AUTOTITLE](/ru/actions/reference/workflows-and-actions/events-that-trigger-workflows#merge_group).

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

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

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