Если у вас есть проверка и состояние с одинаковыми именами и вы выбираете это имя в качестве обязательной проверки состояния, обязательными будут и проверка, и состояние. Дополнительные сведения см. в разделе Конечные точки REST API для проверка.
Примечание. Чтобы быть обязательным, проверки состояния должны успешно завершиться в выбранном репозитории за последние семь дней.
После включения обязательных проверок состояния личную ветвь может потребоваться синхронизировать с базовой перед слиянием. Это гарантирует, что ваша ветвь была протестирована с использованием последнего кода из базовой ветви. Если ваша ветвь устарела, необходимо выполнить слияние базовой ветви с ней. Дополнительные сведения см. в разделе Сведения о защищенных ветвях.
Примечание. Синхронизировать личную ветвь с базовой можно также путем перемещения изменений из одной ветви в другую в GIT. Дополнительные сведения см. в разделе О перемещении изменений между ветвями в Git.
Вы не сможете отправить локальные изменения в защищенную ветвь, пока не будут пройдены все необходимые проверки состояния. Вместо этого вы получите сообщение об ошибке, аналогичное указанному ниже.
remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Required status check "ci-build" is failing
Примечание. Запросы на вытягивание, которые являются актуальными и прошли необходимые проверки состояния, допускают слияние и отправку в защищенную ветвь. Это можно сделать без проверок состояния для самой фиксации слияния.
Необходимые проверка должны быть успешными в соответствии с последней фиксацией SHA
Чтобы запрос на вытягивание был объединен, все необходимые проверка должны передаваться в последнюю фиксацию SHA. Это гарантирует, что последние изменения проверяются и соответствуют необходимым стандартам перед слиянием. Проверки, которые были активированы с помощью предыдущей фиксации SHA, не будут использоваться в рамках обязательных проверка.
Конфликты между головной фиксацией и тестовой фиксацией слияния
Иногда результаты проверок состояния для тестовой фиксации слияния и головной фиксации противоречат друг другу. Если тестовая фиксация слияния имеет состояние, то она должна проходить проверки. В противном случае состояние головной фиксации должно проходить проверки, прежде чем можно будет выполнить слияние ветви.
Если между фиксацией слияния теста и фиксацией головы возникает конфликт, проверка для фиксации тестового слияния отображаются в поле запроса на вытягивание проверки состояния. Это указано в поле состояния запроса на вытягивание строкой, начиная Showing checks for the merge commit
с. Дополнительные сведения о фиксациях тестового слияния см. в разделе "Конечные точки REST API для запросов на вытягивание".
Обработка пропущенных, но обязательных проверок
Предупреждение. Если рабочий процесс пропущен из-за фильтрации путей, фильтрации ветвей или сообщения фиксации, проверка, связанные с этим рабочим процессом, останутся в состоянии "Ожидание". Запрос на включение внесенных изменений, требующий успешной проверки, будет заблокирован при слиянии.
Однако если задание в рабочем процессе пропускается из-за условного состояния, оно сообщает о своем состоянии как "Успешно". Дополнительные сведения см. в разделе Использование условий для управления выполнением задания.
Пример
В следующем примере показан рабочий процесс, требующий состояния завершения "Успешно" для задания 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@v4
- 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
Из-за фильтрации путей запрос на вытягивание, который изменяет только файл в корне репозитория, не активирует этот рабочий процесс и блокируется от слияния. В запросе на вытягивание появится сообщение "Ожидание сообщения о состоянии".
Обязательные проверки состояния из непредвиденных источников
Кроме того, для защищенная ветвь может потребоваться проверка состояния из определенного GitHub App. Если отображается сообщение наподобие приведенного ниже, убедитесь в том, что проверка, указанная в поле слияния, была задана соответствующим приложением.
Required status check "build" was not set by the expected GitHub App.