Skip to main content

Эта версия GitHub Enterprise Server будет прекращена 2023-12-20. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

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

Вы можете проверить наличие распространенных ошибок и устранить проблемы с помощью обязательных проверок состояния.

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

Если у вас есть проверка и состояние с одинаковыми именами и вы выбираете это имя в качестве обязательной проверки состояния, обязательными будут и проверка, и состояние. Дополнительные сведения см. в разделе «AUTOTITLE».

Примечание. Чтобы быть обязательным, проверки состояния должны успешно завершиться в выбранном репозитории за последние семь дней.

После включения обязательных проверок состояния личную ветвь может потребоваться синхронизировать с базовой перед слиянием. Это гарантирует, что ваша ветвь была протестирована с использованием последнего кода из базовой ветви. Если ваша ветвь устарела, необходимо выполнить слияние базовой ветви с ней. Дополнительные сведения см. в разделе «AUTOTITLE».

Примечание. Синхронизировать личную ветвь с базовой можно также путем перемещения изменений из одной ветви в другую в GIT. Дополнительные сведения см. в разделе «AUTOTITLE».

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

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

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

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

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

Если между фиксацией слияния теста и фиксацией головы возникает конфликт, проверка для фиксации тестового слияния отображаются в поле запроса на вытягивание проверки состояния. Это указано в поле состояния запроса на вытягивание строкой, начиная Showing checks for the merge commitс. Дополнительные сведения о фиксациях тестового слияния см. в разделе "Запросы данных".

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

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

По этой причине не следует использовать фильтрацию путей или ветвей, чтобы пропустить выполнение рабочего процесса, если рабочий процесс требуется. Дополнительные сведения см. в разделе "[AUTOTITLE".

Однако если задание в рабочем процессе пропускается из-за условного состояния, оно сообщает о своем состоянии как "Успешно". Дополнительные сведения см. в разделе «AUTOTITLE».

Пример

В следующем примере показан рабочий процесс, требующий состояния завершения "Успешно" для задания 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@v3
      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.