Skip to main content

Erstellen authentifizierter API-Anforderungen mit einer GitHub App in einem GitHub Actions-Workflow

Sie können ein Installationszugriffstoken von einem GitHub App verwenden, um authentifizierte API-Anforderungen in einem GitHub Actions Workflow vorzunehmen. Du kannst das Token auch an eine benutzerdefinierte Aktion übergeben, damit die Aktion authentifizierte API-Anforderungen tätigen kann.

Informationen zur GitHub Actions Authentifizierung

Wenn Sie in einem GitHub Actions-Workflow authentifizierte API-Anfragen stellen müssen oder eine benutzerdefinierte Aktion ausführen müssen, die ein Token erfordert, sollten Sie nach Möglichkeit die integrierte GITHUB_TOKEN verwenden. Das GITHUB_TOKEN kann jedoch nur auf die Ressourcen im Repository des Workflows zugreifen. Wenn Sie auf zusätzliche Ressourcen zugreifen müssen, z. B. auf Ressourcen in einer Organisation oder in einem anderen Repository, können Sie ein GitHub App verwenden. Weitere Informationen dazu, warum Sie GitHub App anstelle von personal access token verwenden könnten, finden Sie unter Informationen zum Erstellen von GitHub Apps.

Authentifizieren mit einem GitHub App

Um mit einem GitHub App authentifizierte API-Anfragen zu stellen, müssen Sie ein GitHub App registrieren, die Anmeldeinformationen Ihrer App speichern und Ihre App installieren. Sobald dies erfolgt ist, können Sie ihre App verwenden, um ein Installationszugriffstoken zu erstellen, mit dem authentifizierte API-Anforderungen in einem GitHub Actions Workflow vorgenommen werden können. Du kannst das Installationszugriffstoken auch an eine benutzerdefinierte Aktion übergeben, für die ein Token benötigt wird.

  1. Registrieren Sie ein GitHub App. Geben Sie Ihrer GitHub App Registrierung die erforderlichen Berechtigungen zum Zugriff auf die gewünschten Ressourcen. Weitere Informationen findest du unter Registrieren einer GitHub-App und Auswählen von Berechtigungen für eine GitHub App.

  2. Speichern Sie die Client-ID Ihrer GitHub App als GitHub Actions Konfigurationsvariable. Du findest die Client-ID auf der Einstellungsseite deiner App. Die Client-ID unterscheidet sich von der App-ID. Weitere Informationen zum Navigieren zur Einstellungsseite für Ihr GitHub Appfinden Sie unter Ändern einer GitHub App-Registrierung. Weitere Informationen zum Speichern von Konfigurationsvariablen findest du unter Speichern von Informationen in Variablen.

  3. Generiere einen privaten Schlüssel für deine App. Speichere den Inhalt der resultierenden Datei als Geheimnis. Speichere den gesamten Inhalt der Datei, einschließlich -----BEGIN RSA PRIVATE KEY----- und -----END RSA PRIVATE KEY-----. Weitere Informationen findest du unter Verwalten privater Schlüssel für GitHub Apps. Weitere Informationen zum Speichern von Geheimnissen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen.

  4. Installieren Sie GitHub App im richtigen Konto und gewähren Sie ihm Berechtigungen und Zugriff auf alle Repositorys, auf die Ihr Workflow zugreifen soll. Weitere Informationen finden Sie unter Installieren Ihrer eigenen GitHub App.

  5. Erstellen Sie in Ihrem GitHub Actions Workflow ein Installationszugriffstoken, mit dem Sie API-Anforderungen durchführen können.

    Dazu können Sie eine GitHub-eigene Aktion verwenden, wie im folgenden Beispiel gezeigt. Wenn Sie diese Aktion nicht verwenden möchten, können Sie die actions/create-github-app-token Aktion forken und bearbeiten oder ein Skript schreiben, damit Ihrr Workflow manuell ein Installationstoken erstellt. Weitere Informationen finden Sie unter Authentifizieren als GitHub App-Installation.

    Der folgende Beispielworkflow verwendet die actions/create-github-app-token-Aktion, um ein Installationszugriffstoken zu generieren. Anschließend verwendet der Workflow das Token, um über die GitHub CLI eine API-Anfrage zu stellen.

    Ersetzen APP_CLIENT_ID Sie im folgenden Workflow durch den Namen der Konfigurationsvariable, in der Sie Ihre Client-ID gespeichert haben. Ersetze APP_PRIVATE_KEY durch den Namen des Geheimnisses, in dem der private Schlüssel der App gespeichert ist.

YAML
on:
  workflow_dispatch:
jobs:
  demo_app_authentication:
    runs-on: ubuntu-latest
    steps:
      - name: Generate a token
        id: generate-token
        uses: actions/create-github-app-token@v3
        with:
          client-id: ${{ vars.APP_CLIENT_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}

      - name: Use the token
        env:
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
        run: |
          gh api octocat