Skip to main content

Solução de problemas de verificações de status necessárias

Você pode verificar erros comuns e resolver problemas com as verificações de status necessárias.

Quem pode usar esse recurso?

As ramificações protegidas estão disponíveis em repositórios públicos com GitHub Free e GitHub Free para organizações. As ramificações protegidas também estão disponíveis em repositórios públicos e privados com GitHub Pro, GitHub Team, GitHub Enterprise Cloud e GitHub Enterprise Server.Para mais informações, confira "Planos do GitHub".

Se você tiver uma verificação e um status com o mesmo nome e selecionar esse nome como uma verificação de status obrigatória, a verificação e o status serão obrigatórios. Para saber mais, confira Pontos de extremidade da API REST para verificações.

Note

Para serem necessárias, as verificações de status devem ter sido concluídas com êxito no repositório escolhido nos últimos sete dias.

Depois que você habilitar as verificações de status solicitadas, seu branch pode precisar estar atualizado com o branch de base antes da ação de merge. Isso garante que o branch foi testado com o código mais recente do branch base. Se o branch estiver desatualizado, você precisará fazer merge do branch base no seu branch. Para saber mais, confira Sobre branches protegidos.

Note

Você também pode atualizar o branch com o branch base usando a troca de base do Git. Para saber mais, confira Sobre a troca de base do Git.

Não será possível fazer push de alterações locais em um branch protegido enquanto todas as verificações de status obrigatórias não forem aprovadas. Sendo assim, você receberá uma mensagem de erro semelhante à mostrada a seguir.

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

Note

As pull requests que estão atualizadas e são aprovadas nas verificações de status obrigatórias podem ser mescladas localmente e enviadas por push para o branch protegido. Isso pode ser feito sem verificações de status em execução no próprio commit de merge.

A verificação necessária precisa ser bem-sucedida em relação ao SHA de confirmação mais recente

Para que uma solicitação pull seja mesclada, todas as verificações necessárias devem passar pela última SHA de confirmação. Isso garante que as alterações mais recentes sejam validadas e atendam aos padrões exigidos antes da fusão. As verificações que foram acionadas usando um SHA de confirmação anterior não serão usadas como parte das verificações necessárias.

Conflitos entre o título do commit e o commit de merge do teste

Por vezes, os resultados das verificações de status para o commit de mescla teste e o commit principal entrarão em conflito. Se o commit de merge de testes tem status, o commit de merge de testes deve passar. Caso contrário, o status do commit principal deve passar antes de você poder mesclar o branch.

Se houver um conflito entre o commit de teste de mesclagem e o commit de cabeçalho, as verificações do commit de teste de mesclagem serão mostradas na caixa de seleção de status da solicitação de pull. Isso é indicado na caixa de status da solicitação de pull por uma linha que começa com Showing checks for the merge commit. Para obter mais informações sobre os commits de mesclagem de teste, confira Pontos de extremidade da API REST para pull requests.

Manipulação ignorada, mas verificações necessárias

Warning

Se um fluxo de trabalho for ignorado devido à filtragem de caminho, à filtragem de branch ou a uma mensagem do commit, as verificações associadas a esse fluxo de trabalho permanecerão no estado "Pending". Uma solicitação de pull que exige que essas verificações sejam bem-sucedidas não poderá ser mesclada.

Se um trabalho em um fluxo de trabalho for ignorado devido a um condicional, ele relatará seu status como "Êxito". Para saber mais, confira Usando condições para controlar a execução do trabalho.

Quando um trabalho falha, todos os trabalhos que dependem dele são ignorados e não relatam uma falha. Uma pull request que exige a verificação não pode ser bloqueada. Para usar uma verificação obrigatória em um trabalho que depende de outros trabalhos e usar a expressão condicional always() além de needs, confira Usando trabalhos em um fluxo de trabalho.

Exemplo

O exemplo a seguir mostra um fluxo de trabalho que requer um status de conclusão "Êxito" para o trabalho build, mas o fluxo de trabalho será ignorado se a solicitação de pull não alterar nenhum arquivo no diretório 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

Devido à filtragem de caminho, uma solicitação de pull que altera apenas um arquivo na raiz do repositório não disparará esse fluxo de trabalho e não poderá ser mesclada. Na solicitação de pull, você verá "Aguardando status ser relatado".

Verificações de status com GitHub Actions e uma fila de mesclagem

Você precisa usar o evento merge_group para disparar GitHub Actions quando uma solicitação de pull é adicionada a uma fila de mesclagem.

Note

Se o seu repositório usa o GitHub Actions para realizar verificações necessárias em solicitações pull em seu repositório, é necessário atualizar os fluxos de trabalho para incluir o evento merge_group como um gatilho adicional. Caso contrário, as verificações de status não serão disparadas quando você adicionar uma solicitação de pull a uma fila de mesclagem. A mesclagem falhará, pois o verificação de status obrigatória não será relatada. O evento merge_group é separado dos eventos pull_request e push.

Um fluxo de trabalho que relata uma verificação exigida pelas proteções do branch de destino seria semelhante a este:

on:
  pull_request:
  merge_group:

Para saber mais sobre o evento merge_group, confira Eventos que disparam fluxos de trabalho.

Verificações de status de fontes inesperadas obrigatório

Também é possível que um branch protegido exija uma verificação de status de um GitHub App específico. Se você vir uma mensagem parecida com a seguinte, você deverá verificar se a verificação listada na caixa de merge foi definida pelo aplicativo esperado.

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