Skip to main content

Création de règles de protection de déploiement personnalisées

Utilisez GitHub Apps pour automatiser la protection des déploiements avec des systèmes tiers.

Qui peut utiliser cette fonctionnalité ?

Des règles de protection de déploiement personnalisées sont disponibles dans les dépôts publics pour tous les plans. Pour accéder à des règles de protection de déploiement personnalisées dans des dépôts privés ou internes, vous devez utiliser GitHub Enterprise.

Prérequis

Remarque

Les règles de protection de déploiement personnalisées sont actuellement en préversion publique et sont susceptibles d’être modifiées.

Pour obtenir des informations générales sur les règles de protection du déploiement, consultez Déploiement avec GitHub Actions.

Création d’une règle de protection de déploiement personnalisée avec GitHub Apps

  1. Créez une GitHub App. Pour plus d’informations, consultez « Inscription d’une application GitHub ». Configurez l’GitHub App comme suit.

    1. Si vous le souhaitez, dans le champ de texte URL de rappel, sous « Identification et autorisation des utilisateurs », entrez l’URL de rappel. Pour plus d’informations, consultez « À propos de l’URL de rappel d’autorisation utilisateur ».

    2. Sous « Autorisations », sélectionnez Autorisations du dépôt.

    3. À droite d’« Actions », cliquez sur le menu déroulant et sélectionnez Accès : lecture seule.

          ![Screenshot de la section « Autorisations du référentiel » pour une nouvelle application GitHub. L'autorisation Actions indique « Lecture seule » et est soulignée en orange.](/assets/images/help/actions/actions-repo-permissions-read-only.png)
      
    4. À droite de « Déploiements », cliquez sur le menu déroulant et sélectionnez Accès : Lecture et écriture.

          ![Screenshot de la section « Autorisations du référentiel » pour une nouvelle application GitHub. L’autorisation Déploiements affiche « Lecture et écriture » et est surlignée en orange.](/assets/images/help/actions/actions-deployments-repo-permissions-read-and-write.png)
      
    5. Sous « S’abonner aux événements », sélectionnez Règle de protection du déploiement.

          ![Screenshot de la section « S’abonner à des événements » pour une nouvelle application GitHub. La case à cocher de la règle de protection de déploiement est indiquée en orange.](/assets/images/help/actions/actions-subscribe-to-events-deployment-protection-rules.png)
      
  2. Installez la règle de protection de déploiement personnalisée dans vos dépôts et activez-la pour l’utiliser. Pour plus d’informations, consultez « Configuration de règles de protection de déploiement personnalisées ».

Approbation ou rejet de déploiements

Une fois qu’un workflow atteint un travail qui référence un environnement sur lequel la règle de protection de déploiement personnalisée est activée, GitHub envoie une requête POST à une URL que vous configurez contenant la charge utile deployment_protection_rule. Vous pouvez écrire votre règle de protection du déploiement pour envoyer automatiquement des requêtes d’API REST qui approuvent ou rejettent le déploiement en fonction de la charge utile deployment_protection_rule. Configurez vos requêtes d’API REST comme suit.

  1. Validez la requête POST entrante. Pour plus d’informations, consultez « Validation des livraisons de webhook ».

  2. Utilisez un jeton web JSON pour l’authentification en tant que GitHub App. Pour plus d’informations, consultez « Authentification en tant qu’application GitHub ».

  3. À l’aide de l’ID d’installation de la charge utile deployment_protection_rule du webhook, générez un jeton d’installation. Pour plus d’informations, consultez « À propos de l’authentification avec une application GitHub ».

    curl --request POST \
    --url "http(s)://HOSTNAME/api/v3/app/installations/INSTALLATION_ID/ACCESS_TOKENS" \
    --header "Accept: application/vnd.github+json" \
    --header "Authorization: Bearer {jwt}" \
    --header "Content-Type: application/json" \
    --data \
    '{ \
       "repository_ids": [321], \
       "permissions": { \
          "deployments": "write" \
       } \
    }'
    
  4. Si vous souhaitez ajouter un rapport d’état sans effectuer d’autre action sur GitHub, envoyez une demande POST à /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule. Dans le corps de la requête, omettez le state. Pour plus d’informations, consultez « Points de terminaison d'API REST pour l'exécution des workflows ». Vous pouvez publier un rapport d’état sur le même déploiement jusqu’à 10 fois. Les rapports d’état prennent en charge la mise en forme Markdown et peuvent avoir jusqu’à 1 024 caractères.

  5. Pour approuver ou rejeter une requête, envoyez une requête POST à /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule. Dans le corps de la requête, attribuez à la propriété state la valeur approved ou rejected. Pour plus d’informations, consultez « Points de terminaison d'API REST pour l'exécution des workflows ».

  6. Si vous le souhaitez, demandez l’état d’une approbation pour une exécution de workflow en envoyant une requête GET à /repos/OWNER/REPOSITORY_ID/actions/runs/RUN_ID/approvals. Pour plus d’informations, consultez « Points de terminaison d'API REST pour l'exécution des workflows ».

  7. Si vous le souhaitez, examinez le déploiement sur GitHub. Pour plus d’informations, consultez « Révision des déploiements ».