Skip to main content

Erstellen von benutzerdefinierten Regeln für den Bereitstellungsschutz

Verwende GitHub Apps, um den Schutz von Bereitstellungen mit Drittanbietersystemen zu automatisieren.

Wer kann dieses Feature verwenden?

Benutzerdefinierte Regeln für den Bereitstellungsschutz sind in öffentlichen Repositorys für alle Pläne verfügbar. Für den Zugriff auf benutzerdefinierte Regeln für den Bereitstellungsschutz in privaten oder internen Repositorys musst du GitHub Enterprise verwenden.

Voraussetzungen

Hinweis

Benutzerdefinierte Regeln für den Bereitstellungsschutz befinden sich derzeit in der beta. Änderungen sind vorbehalten.

Allgemeine Informationen zu Bereitstellungsschutzregeln findest du unter Bereitstellen mit GitHub Actions.

Erstellen einer benutzerdefinierten Regel für den Bereitstellungsschutz mit GitHub Apps

  1. Erstelle eine GitHub App. Weitere Informationen finden Sie unter Registrieren einer GitHub-App. Konfiguriere die GitHub App wie folgt.

    1. Optional kannst du im Textfeld Rückruf-URL unter „Identifizieren und Autorisieren von Benutzern“ die Rückruf-URL eingeben. Weitere Informationen finden Sie unter Informationen zur Rückruf-URL für die Benutzerautorisierung.
    2. Wähle unter „Berechtigungen“ die Option Repositoryberechtigungen aus.
    3. Klicke rechts neben „Aktionen“ auf das Dropdownmenü und wähle Zugriff: Schreibgeschützt aus.
      Screenshot: Abschnitt „Repository permissions“ für eine neue GitHub-App. Für die Berechtigung „Actions“ wird „Read-only“ angezeigt, und sie wird orange hervorgehoben.
    4. Klicke rechts neben „Bereitstellungen“ auf das Dropdownmenü und wähle Zugriff: Lesen und schreiben aus.
      Screenshot: Abschnitt „Repository permissions“ für eine neue GitHub-App. Für die Berechtigung „Deployments“ wird „Read and write“ angezeigt, und sie wird orange hervorgehoben.
    5. Wähle unter „Ereignisse abonnieren“ die Option Regel für Bereitstellungsschutz aus.
      Screenshot: Abschnitt „Subscribe to events section“ für eine neue GitHub-App. Das Kontrollkästchen für die Bereitstellungsschutzregel wird orange hervorgehoben.
  2. Installiere die benutzerdefinierte Bereitstellungsschutzregel in deinen Repositorys und aktiviere ihre Verwendung. Weitere Informationen finden Sie unter Konfigurieren von benutzerdefinierten Regeln für den Bereitstellungsschutz.

Genehmigen oder Ablehnen von Bereitstellungen

Sobald ein Workflow einen Auftrag erreicht, der auf eine Umgebung mit aktivierter benutzerdefinierter Bereitstellungsschutzregel verweist, sendet GitHub eine POST-Anforderung mit der Payload deployment_protection_rule an die von dir konfigurierte URL. Du kannst deine Bereitstellungsschutzregel so schreiben, dass automatisch REST-API-Anforderungen zum Genehmigen oder Ablehnen der Bereitstellung basierend auf der Payload deployment_protection_rule gesendet werden. Konfiguriere deine REST-API-Anforderungen wie folgt.

  1. Validiere die eingehende POST-Anforderung. Weitere Informationen finden Sie unter Validierung von Webhook-Zustellung.

  2. Verwende ein JSON-Webtoken zur Authentifizierung als GitHub App. Weitere Informationen finden Sie unter Authentifizieren als GitHub-App.

  3. Generiere ein Installationstoken unter Verwendung der Installations-ID aus der Webhookpayload deployment_protection_rule. Weitere Informationen finden Sie unter Informationen zur Authentifizierung mit einer GitHub-App.

    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. Um einen Statusbericht hinzuzufügen, ohne weitere Aktionen auf GitHub auszuführen, können Sie optional eine POST-Anforderung an /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule senden. Lass im Anforderungstext den state weg. Weitere Informationen finden Sie unter REST-API-Endpunkte für Workflowausführungen. Du kannst einen Statusbericht bis zu zehn Mal an ein und dieselbe Bereitstellung posten. Statusberichte unterstützen die Markdownformatierung und können bis zu 1024 Zeichen lang sein.

  5. Um eine Anforderung zu genehmigen oder abzulehnen, sende eine POST-Anforderung an /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule. Lege die Eigenschaft state im Anforderungstext entweder auf approved oder auf rejected fest. Weitere Informationen finden Sie unter REST-API-Endpunkte für Workflowausführungen.

  6. Optional kannst du den Status einer Genehmigung für eine Workflowausführung anfordern, indem du eine GET-Anforderung an /repos/OWNER/REPOSITORY_ID/actions/runs/RUN_ID/approvals sendest. Weitere Informationen finden Sie unter REST-API-Endpunkte für Workflowausführungen.

  7. Oder Sie sehen sich die Bereitstellung auf GitHub an. Weitere Informationen finden Sie unter Überprüfen von Bereitstellungen.