# Resolución de problemas de verificaciones de estado requeridas

Resuelva errores comunes y desbloquee la combinación o inserción en ramas protegidas mediante la solución de problemas de comprobaciones de estado necesarias.

Utiliza estas comprobaciones cuando una comprobación de estado obligatoria impida fusionar o hacer push en una rama protegida. Consulte [Status checks](/es/pull-requests/reference/status-checks).

* Una comprobación de estado necesaria debe haberse completado correctamente en el repositorio elegido durante los últimos siete días.
* Si una comprobación y un estado de confirmación tienen el mismo nombre, ambos deben pasar cuando se requiera ese nombre. Consulte [Puntos de conexión de la API de REST para comprobaciones](/es/rest/checks).
* Si la protección de rama requiere que su rama esté actualizada, fusione o haga un rebase de la rama base en su rama. Consulte [Acerca de las ramas protegidas](/es/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging) y [Acerca del rebase de Git](/es/get-started/using-git/about-git-rebase).

Si no se han superado las comprobaciones de estado requeridas, hacer un push a una rama protegida devuelve un error similar a este.

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

> \[!NOTE]
> Las solicitudes de cambios que están actualizadas y pasan las comprobaciones de estado necesarias se pueden fusionar localmente y enviarse a la rama protegida. Puede hacerlo sin ejecutar comprobaciones de estado en la propia confirmación de combinación.

## La comprobación requerida debe tener éxito contra el SHA del último commit.

Compruebe lo siguiente si una comprobación necesaria sigue bloqueando una solicitud de incorporación de cambios.

* Las comprobaciones obligatorias deben superarse en el SHA de la confirmación más reciente. Las comprobaciones de confirmaciones anteriores no satisfacen el requisito.
* Los estados de comprobación correctos son `success`, `skipped`y `neutral`. Consulte [Status checks](/es/pull-requests/reference/status-checks).

## Conflictos entre confirmaciones de encabezado y confirmaciones de fusiones de prueba

Use la casilla de comprobación de estado de la solicitud de incorporación de cambios para identificar qué confirmación debe pasar.

| Origen de comprobación de estado              | Qué debe pasar                         | Lo que puede ver                                         |
| --------------------------------------------- | -------------------------------------- | -------------------------------------------------------- |
| El commit de merge de prueba tiene un estado  | Confirmación de combinación de pruebas | `Showing checks for the merge commit`                    |
| El commit de fusión de prueba no tiene estado | Confirmación principal                 | Comprueba si hay la confirmación principal más reciente. |

Consulte [Puntos de conexión de la API REST para solicitudes de incorporación de cambios](/es/rest/pulls/pulls#get-a-pull-request).

## Manejo de verificaciones omitidas pero requeridas

| Causa                                                                                                                                                                                                                                                                                                                                                                                                            | Result                                                                             | Corrección o comprobación                                                                                                                                                                                                                        |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Un flujo de trabajo se omite por [el filtrado de rutas](/es/actions/reference/workflows-and-actions/workflow-syntax#onpushpull_requestpull_request_targetpathspaths-ignore), [el filtrado de ramas](/es/actions/reference/workflows-and-actions/workflow-syntax#onpull_requestpull_request_targetbranchesbranches-ignore) o un [mensaje de commit](/es/actions/how-tos/manage-workflow-runs/skip-workflow-runs). | Las comprobaciones asociadas permanecen en estado «Pendiente» y bloquean la fusión | Evite requerir flujos de trabajo que se puedan omitir.                                                                                                                                                                                           |
| Se omite una tarea debido a una condición                                                                                                                                                                                                                                                                                                                                                                        | El trabajo informa de "Correcto"                                                   | Consulte [Utilizar condiciones para controlar la ejecución de jobs](/es/actions/how-tos/write-workflows/choose-when-workflows-run/control-jobs-with-conditions).                                                                                 |
| Un trabajo depende de un trabajo fallido                                                                                                                                                                                                                                                                                                                                                                         | Se omite el trabajo dependiente y es posible que no bloquee la combinación.        | Use `always()` con `needs` para las comprobaciones necesarias que dependen de otras tareas. Consulte [Utilizar tareas en un flujo de trabajo](/es/actions/how-tos/write-workflows/choose-what-workflows-do/use-jobs#defining-prerequisite-jobs). |

### Ejemplo

Este flujo de trabajo requiere un trabajo correcto `build` , pero solo se ejecuta cuando una solicitud de incorporación de cambios cambia los archivos en `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
```

Una solicitud de incorporación de cambios que solo cambie un archivo en la raíz del repositorio no desencadenará este flujo de trabajo. Si `build` es necesario, la solicitud de incorporación de cambios queda bloqueada con el mensaje "Esperando a que se informe del estado".

### Comprobaciones de estado con GitHub Actions y una Merge queue

Si una cola de fusión requiere la comprobación GitHub Actions, active el flujo de trabajo con el evento `merge_group`.

> \[!NOTE]
> Si el repositorio usa GitHub Actions para realizar las comprobaciones necesarias en las solicitudes de incorporación de cambios en el repositorio, debe actualizar los flujos de trabajo para incluir el evento `merge_group` como desencadenador adicional. De lo contrario, las comprobaciones de estado no se desencadenarán al agregar una solicitud de incorporación de cambios a una cola de fusión. Se producirá un error en la fusión mediante combinación, ya que no se notificará la comprobación de estado necesaria. El evento `merge_group` es independiente de los eventos `pull_request` y `push`.

Configuración del desencadenador de ejemplo:

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

Consulte [Eventos que desencadenan flujos de trabajo](/es/actions/reference/workflows-and-actions/events-that-trigger-workflows#merge_group).

## Verificaciones de estado necesarias de orígenes inesperados

Una rama protegida también puede requerir una comprobación de estado de un elemento específico GitHub App. Si ve un mensaje similar al siguiente, compruebe que la casilla que aparece en el cuadro de combinación se estableció mediante la aplicación esperada.

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