Skip to main content

Solución de problemas para verificaciones de estado requeridas

Puedes verificar si hay errores comunes y resolver problemas con las verificaciones de estado requeridas.

Las ramas protegidas están disponibles en los repositorios públicos con GitHub Free y GitHub Free para las organizaciones, y en los repositorios públicos y privados con GitHub Pro, GitHub Team, GitHub Enterprise Cloud, y GitHub Enterprise Server. Para más información, vea "Productos de GitHub".

Si tienes una verificación y un estado con el mismo nombre y seleccionas dicho nombre como una verificación de estado requerida, tanto la verificación como el estado se requerirán. Para obtener más información, consulte Comprobaciones.

Después de que habilitas la verificación de estado requerida, tu rama podría tener que actualizarse con la rama base antes de que se pueda fusionar. Esto garantiza que tu rama ha sido probada con el último código desde la rama base. Si tu rama no está actualizada, necesitarás fusionar la rama base en tu rama. Para más información, vea "Acerca de las ramas protegidas".

Nota: También puede actualizar la rama con la rama base utilizando la fusión mediante cambio de base de Git. Para obtener más información, consulte "Acerca de la fusión mediante cambio de base de Git".

No podrás subir cambios locales a una rama protegida hasta que se hayan aprobado todas las verificaciones de estado requeridas. En su lugar, recibirá un mensaje de error similar al siguiente:

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

Nota: Las solicitudes de incorporación de cambios que están actualizadas y aprobaron las comprobaciones de estado requeridas se pueden fusionar localmente e insertarse en la rama protegida. Esto se puede hacer sin las verificaciones de estado ejecutándose en la propia confirmación de fusión.

Conflictos entre confirmaciones de encabezado y confirmaciones de fusiones de prueba

Algunas veces, los resultados de las verificaciones de estado para la confirmación de la prueba de fusión y de la confirmación principal entrarán en conflicto. Si la confirmación de fusión de prueba tiene un estado, ésta pasará. De otra manera, el estado de la confirmación principal deberá pasar antes de que puedas fusionar la rama. Para obtener más información sobre las confirmaciones de combinación de prueba, consulte "Incorporación de cambios".

Ramas con conflictos en las confirmaciones de fusión

Se salta el manejo pero se requieren las verificaciones

Nota: Si se omite un flujo de trabajo debido a un filtrado de ruta, filtrado de rama o mensaje de confirmación, las comprobaciones asociadas a ese flujo de trabajo permanecerán en estado "Pendiente". Se bloqueará la fusión mediante combinación de una solicitud de incorporación de cambios que requiera esas comprobaciones para realizarse correctamente.

Si se omite un trabajo de un flujo de trabajo debido a una condicional, notificará su estado como "Correcto". Para obtener más información, consulta Saltarse las ejecuciones de flujo de trabajo y Utilizar condiciones para controlar la ejecución de trabajos.

Ejemplo

En el ejemplo siguiente se muestra un flujo de trabajo que requiere un estado de finalización "Correcto" para el trabajo build, pero el flujo de trabajo se omitirá si la solicitud de incorporación de cambios no cambia ningún archivo en el directorio 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@v3
    - 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

Debido al filtrado de ruta, una solicitud de incorporación de cambios que solo cambia un archivo en la raíz del repositorio no desencadenará este flujo de trabajo y se bloqueará su fusión mediante combinación. Verías el siguiente estado en la solicitud de cambios:

Verificación requerida omitida, pero mostrada como pendiente

Puedes arreglar esto creando un flujo de trabajo genérico con el mismo nombre, el cual devolverá "true" en cualquier caso similar al flujo de trabajo siguiente:

name: ci
on:
  pull_request:
    paths-ignore:
      - 'scripts/**'
      - 'middleware/**'
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: 'echo "No build required"'

Ahora siempre se omitirán las comprobaciones cuando alguien envíe una solicitud de incorporación de cambios que no cambie los archivos que aparecen en paths el primer flujo de trabajo.

Verificar omitidos pero que pasan debido a un flujo de trabajo genérico

Notas:

  • Asegúrese de que la clave name y el nombre de trabajo requerido en ambos archivos de flujo de trabajo sean los mismos. Para obtener más información, consulte"Sintaxis de flujo de trabajo para GitHub Actions".
  • El ejemplo anterior utiliza GitHub Actions, pero esta solución también aplica a otros proveedores de IC/DC que se integran con GitHub.

Comprobaciones de estado necesarias de orígenes inesperados

También es posible que una rama protegida requiera una verificación de estado desde una GitHub App específica. Si ves un mensaje similar al siguiente, entonces deberías verificar que la app esperada haya configurado la verificación que se lista en la caja de fusión.

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