Si vous disposez d’une vérification et d’un statut portant le même nom, et sélectionnez ce nom comme vérification de statut requise, la vérification et le statut sont obligatoires. Pour plus d’informations, consultez « Points de terminaison d’API REST pour les vérifications ».
Note
Pour être obligatoire, vérifications de statut doivent s’exécuter correctement dans le référentiel choisi au cours des sept derniers jours.
Une que vous activé les vérifications de statut requises, il se peut que votre branche doive être mise à jour avec la branche de base avant la fusion. Cela garantit que votre branche a été testée avec le code le plus récent de la branche de base. Si votre branche est obsolète, vous devez la fusionner avec la branche de base. Pour plus d’informations, consultez « À propos des branches protégées ».
Note
Vous pouvez également mettre à jour votre branche avec la branche de base à l’aide d’un rebasage Git. Pour plus d’informations, consultez « À propos de git rebase ».
Vous ne pourrez pas envoyer (push) des modifications locales à une branche protégée tant que toutes les vérifications de statut requises n’auront pas abouti. Au lieu de cela, vous recevrez un message d’erreur similaire à celui-ci :
remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Required status check "ci-build" is failing
Note
Les demandes de tirage à jour qui passent les vérifications de statut requises peuvent être fusionnées localement et envoyées (push) à la branche protégée. Cela peut être effectué sans vérifications d'état sur la validation de fusion elle-même.
La vérification requise doit réussir par rapport à la dernière validation SHA
Pour qu'une demande de tirage soit fusionnée, toutes les vérifications requises doivent être effectuées sur la base de la dernière validation SHA. Cela garantit que les modifications les plus récentes sont validées et répondent aux normes requises avant la fusion. Les vérifications qui ont été déclenchées en utilisant la validation SHA précédente ne seront pas utilisées dans le cadre des vérifications requises.
Conflits entre la validation principale et la validation de fusion test
Parfois, les résultats des vérifications de statut pour la validation de fusion test et la validation principale sont contradictoires. Si la validation de fusion test a un statut, elle doit aboutir. Autrement, le statut de la validation principale doit passer la vérification avant que vous puissiez fusionner la branche.
En cas de conflit entre le commit de fusion de test et le commit principal, les vérifications du commit de fusion de test sont affichées dans la zone de vérifications d’état de la demande de tirage. Cela est indiqué dans la zone d’état de la demande de tirage par une ligne commençant par Showing checks for the merge commit
. Pour plus d’informations sur les commits de fusion test, consultez Points de terminaison d’API REST pour les demandes de tirage (pull request).
Gestion ignorée mais vérifications requises
Warning
Si un flux de travail est ignoré en raison du filtrage de chemin d’accès, du filtrage de branche ou d’un message de commit, les vérifications associées à ce flux de travail restent alors à l’état « En attente ». La fusion d’une demande de tirage (pull request) nécessitant la réussite de ces vérifications sera bloquée.
Vous ne devez pas utiliser le filtrage de chemin d’accès ou de branche pour ignorer les exécutions de workflow si celui-ci est requis. Pour plus d’informations, consultez « Exécutions de workflow ignorées » et « Workflows requis ».
Si, toutefois, un travail dans un workflow est ignoré en raison d’un conditionnel, il signale son état comme « Réussite ». Pour plus d’informations, consultez « Utilisation de conditions pour contrôler l’exécution des travaux ».
En cas d’échec d’un travail, tous les travaux qui dépendent de celui ayant échoué sont ignorés et ne signalent pas d’échec. Une demande de tirage qui requiert la vérification ne peut pas être bloquée. Pour utiliser une vérification requise sur un travail qui dépend d'autres travaux, utilisez l’expression conditionnelle always()
en plus de needs
, consultez Utilisation de travaux dans un workflow.
Exemple
L’exemple suivant montre un workflow nécessitant un statut d’accomplissement « Réussi » pour le travail build
, mais le workflow est ignoré si la demande de tirage ne change aucun fichier dans le répertoire 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
En raison du filtrage de chemin d’accès, une demande de tirage qui modifie uniquement un fichier à la racine du dépôt ne déclenche pas ce workflow et sa fusion est bloquée. Sur la demande de tirage (pull request), le message « Waiting for status to be reported » (En attente d’affichage de l’état) apparaît.
Vous ne devez pas utiliser le filtrage de chemin d’accès ou de branche pour ignorer les exécutions de workflow si celui-ci est requis. Pour plus d’informations, consultez « Exécutions de workflow ignorées » et « Workflows requis ».
Vérifications d’état nécessaires à partir de sources inattendues
Il est également possible qu’une branche protégée exige une vérification de statut d’une GitHub App spécifique. Si vous voyez un message similaire au suivant, vous devez vérifier que la vérification répertoriée dans la zone de fusion a été définie par l’application attendue.
Required status check "build" was not set by the expected GitHub App.