Skip to main content

Automatisieren von Dependabot mit GitHub Actions

Beispiele für die Verwendung von GitHub Actions zum Automatisieren allgemeiner Dependabot-bezogener Aufgaben.

Wer kann dieses Feature verwenden?

Benutzer*innen mit Schreibzugriff

Note

In diesem Artikel wird erläutert, wie Dependabot-bezogene Aufgaben mit GitHub Actions automatisiert werden können. Weitere Informationen zur Ausführung von Dependabot updates mit GitHub Actions sind hingegen unter Informationen zu Dependabot über GitHub Actions-Runner zu finden.

Du kannst GitHub Actions verwenden, um automatisierte Aufgaben durchzuführen, wenn Dependabot Pull Requests zum Aktualisieren von Abhängigkeiten erstellt. Dies kann hilfreich sein, wenn deine Pläne wie folgt aussehen:

  • Sicherstellen, dass Pull Requests von Dependabot (Versionsupdates und Sicherheitsupdates) mit den richtigen Daten für deine Arbeitsprozesse erstellt werden, einschließlich Bezeichnungen, Namen und Prüfern

  • Auslösen von Workflows, um Pull Requests von Dependabot (Versionsupdates und Sicherheitsupdates) in deinen Überprüfungsprozess zu senden oder damit sie automatisch gemergt werden

Informationen zu Dependabot und GitHub Actions

Dependabot erstellt Pull Requests, um deine Abhängigkeiten auf dem neuesten Stand zu halten. Du kannst GitHub Actions verwenden, um automatisierte Aufgaben auszuführen, wenn diese Pull Requests erstellt werden. Rufe beispielsweise zusätzliche Artefakte ab, füge Bezeichnungen hinzu, führe Tests aus, oder ändere den Pull Request anderweitig.

Von Dependabot können GitHub Actions-Workflows in den zugehörigen Pull Requests und Kommentaren ausgelöst werden. Bestimmte Ereignisse werden jedoch anders behandelt. Weitere Informationen findest du unter Problembehandlung von Dependabot auf GitHub-Aktionen.

Nachstehend sind mehrere gängige Szenarios für Pull Requests aufgeführt, in denen mithilfe von GitHub Actions eine Automatisierung durchgeführt werden kann.

Abrufen von Metadaten zu einem Pull Request

Die meisten Automatisierungen erfordern Wissen über den Inhalt des Pull Requests: Du musst den Abhängigkeitsnamen kennen und wissen, ob es um eine Produktionsabhängigkeit geht und ob es sich um ein Haupt-, Neben- oder Patchupdate handelt. Du kannst eine Aktion verwenden, um Informationen zu den Abhängigkeiten abzurufen, die durch einen Pull Request aktualisiert werden, der von Dependabot generiert wird.

Beispiel:

YAML
name: Dependabot fetch metadata
on: pull_request

permissions:
  pull-requests: write
  issues: write
  repository-projects: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      # The following properties are now available:
      #  - steps.metadata.outputs.dependency-names
      #  - steps.metadata.outputs.dependency-type
      #  - steps.metadata.outputs.update-type

Weitere Informationen findest du im dependabot/fetch-metadata-Repository.

Bezeichnen eines Pull Requests

Wenn du über andere Automatisierungs- oder Selektierungsworkflows verfügst, die auf GitHub-Bezeichnungen basieren, kannst du eine Aktion konfigurieren, um Bezeichnungen basierend auf den bereitgestellten Metadaten zuzuweisen.

Beispiel für die Kennzeichnung aller Produktionsabhängigkeitsupdates mit einer Bezeichnung:

YAML
name: Dependabot auto-label
on: pull_request

permissions:
  pull-requests: write
  issues: write
  repository-projects: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Add a label for all production dependencies
        if: steps.metadata.outputs.dependency-type == 'direct:production'
        run: gh pr edit "$PR_URL" --add-label "production"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}

Automatisches Genehmigen eines Pull Requests

Du kannst Pull Requests von Dependabot automatisch genehmigen, indem du die GitHub CLI in einem Workflow verwendest.

Beispiel:

YAML
name: Dependabot auto-approve
on: pull_request

permissions:
  pull-requests: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Approve a PR
        run: gh pr review --approve "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}

Aktivieren des automatischen Mergens für einen Pull Request

Wenn du Maintainern erlauben möchtest, bestimmte Pull Requests für automatisches Mergen zu markieren, kannst du die automatische Mergefunktion von GitHub nutzen. Dadurch kann der Pull Request zusammengeführt werden, wenn Tests und Genehmigungen der Regeln für den Schutz von Branches erfolgreich erfüllt werden.

Weitere Informationen findest du unter Automatisches Zusammenführen eines Pull Requests und Verwalten einer Branchschutzregel.

Du kannst stattdessen GitHub Actions und die GitHub CLI verwenden. Es folgt ein Beispiel, in dem alle Patchupdates automatisch in my-dependency gemergt werden:

YAML
name: Dependabot auto-merge
on: pull_request

permissions:
  contents: write
  pull-requests: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Enable auto-merge for Dependabot PRs
        if: contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'
        run: gh pr merge --auto --merge "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}

Note

Wenn du Statusüberprüfungen zum Testen von Pull Requests verwendest, solltest du Require status checks to pass before merging für den Zielbranch für Pull Requests von Dependabot aktivieren. Diese Branchschutzregel stellt sicher, dass Pull Requests nicht zusammengeführt werden, es sei denn, alle erforderlichen Statusüberprüfungen sind erfolgreich. Weitere Informationen finden Sie unter Verwalten einer Branchschutzregel.

Untersuchen fehlgeschlagener Workflowausführungen

Überprüfe Folgendes, wenn die Workflowausführung fehlschlägt:

  • Du führst den Workflow nur aus, wenn er vom richtigen Akteur ausgelöst wird.
  • Du checkst den richtigen ref für den pull_request aus.
  • Die Geheimnisse sind in Dependabot-Geheimnissen und nicht als GitHub Actions-Geheimnisse verfügbar.
  • Du verfügst über ein GITHUB_TOKEN mit den richtigen Berechtigungen.

Informationen zum Schreiben und Debuggen von GitHub Actions findest du unter Schreiben von Workflows.

Weitere Tipps zum Beheben von Problemen mit Workflows findest du unter Problembehandlung von Dependabot auf GitHub-Aktionen.