# Solução de problemas para checagens de status obrigatórias

Resolva erros comuns e desbloqueie a mesclagem ou o envio para ramificações protegidas solucionando problemas nas verificações de status obrigatórias.

Use estas verificações quando uma verificação de status obrigatória bloquear a mesclagem ou o envio para uma ramificação protegida. Consulte [Status checks](/pt/pull-requests/reference/status-checks).

* Uma verificação de status necessária deve ter sido concluída com êxito no repositório escolhido nos últimos sete dias.
* Se uma verificação e um status de commit tiverem o mesmo nome, ambos devem ser aprovados quando esse nome for obrigatório. Consulte [Pontos de extremidade da API REST para verificações](/pt/rest/checks).
* Se a proteção de ramificação exigir que sua ramificação esteja atualizada, faça a mesclagem ou o rebase da ramificação base em sua ramificação. Confira [Sobre branches protegidos](/pt/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging) e [Sobre a troca de base do Git](/pt/get-started/using-git/about-git-rebase).

Se as verificações de status obrigatórias não forem aprovadas, o envio para uma ramificação protegida retornará um erro semelhante a este.

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

> \[!NOTE]
> As solicitações de pull que estão atualizadas e são aprovadas nas verificações de status obrigatórias podem ser mescladas localmente e enviadas por push para a ramificação protegida. Você pode fazer isso sem executar verificações de status na própria confirmação de mesclagem.

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

Verifique o seguinte se uma verificação necessária ainda está bloqueando uma solicitação de pull.

* As verificações obrigatórias devem ser aprovadas no SHA do commit mais recente. As verificações de commits anteriores não atendem ao requisito.
* Os status de verificação bem-sucedidos são `success`, `skipped`e `neutral`. Consulte [Status checks](/pt/pull-requests/reference/status-checks).

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

Use a caixa de verificações de status do pull request para identificar qual commit deve ser aprovado.

| Origem da verificação de status               | O que deve passar              | O que você pode ver                   |
| --------------------------------------------- | ------------------------------ | ------------------------------------- |
| O commit de teste de mesclagem tem um status  | O commit de teste de mesclagem | `Showing checks for the merge commit` |
| O commit de teste de mesclagem não tem status | O commit head                  | Verifica o commit head mais recente   |

Consulte [Endpoints da API REST para solicitações de pull](/pt/rest/pulls/pulls#get-a-pull-request).

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

| Cause                                                                                                                                                                                                                                                                                                                                                                                                                           | Result                                                                                | Como corrigir ou verificar                                                                                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Um fluxo de trabalho é ignorado pela [filtragem de caminho](/pt/actions/reference/workflows-and-actions/workflow-syntax#onpushpull_requestpull_request_targetpathspaths-ignore), [filtragem de ramificação](/pt/actions/reference/workflows-and-actions/workflow-syntax#onpull_requestpull_request_targetbranchesbranches-ignore) ou uma [mensagem de confirmação](/pt/actions/how-tos/manage-workflow-runs/skip-workflow-runs) | As verificações associadas permanecem em um estado "Pendente" e bloqueiam a mesclagem | Evite exigir fluxos de trabalho que podem ser ignorados.                                                                                                                                                                                       |
| Uma tarefa é ignorada por uma condição                                                                                                                                                                                                                                                                                                                                                                                          | A tarefa indica "Sucesso"                                                             | Consulte [Usando condições para controlar a execução do trabalho](/pt/actions/how-tos/write-workflows/choose-when-workflows-run/control-jobs-with-conditions).                                                                                 |
| Uma tarefa depende de uma tarefa com falha                                                                                                                                                                                                                                                                                                                                                                                      | A tarefa dependente é ignorada e não pode bloquear a mesclagem                        | Use `always()` com `needs` para verificações obrigatórias que dependem de outras tarefas. Consulte [Usando tarefas em um fluxo de trabalho](/pt/actions/how-tos/write-workflows/choose-what-workflows-do/use-jobs#defining-prerequisite-jobs). |

### Example

Esse fluxo de trabalho requer uma execução bem-sucedida de `build`, mas é executado somente quando uma pull request altera arquivos em `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
```

Uma solicitação de pull que altera apenas um arquivo na raiz do repositório não disparará esse fluxo de trabalho. Se `build` for necessário, a pull request é bloqueada com "Aguardando o status ser relatado".

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

Se uma fila de mesclagem exigir uma verificação GitHub Actions, acione o fluxo de trabalho com o evento `merge_group`.

> \[!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`.

Configuração de gatilho de exemplo:

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

Consulte [Eventos que disparam fluxos de trabalho](/pt/actions/reference/workflows-and-actions/events-that-trigger-workflows#merge_group).

## Verificações obrigatórias de status de fontes inesperadas

Uma ramificação protegida também pode exigir uma verificação de status de uma GitHub App específica. Se você vir uma mensagem semelhante à seguinte, verifique se a marcação listada na caixa de mesclagem foi feita pelo aplicativo esperado.

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