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

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:

  • Stelle sicher, dass Dependabot Pull Requests (Versions- und Sicherheitsupdates) mit den richtigen Daten für deine Arbeitsprozesse erstellt werden, einschließlich Bezeichnungen und Namen.

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

Hinweis

Dein Websiteadministrator muss Dependabot updates für Ihre GitHub Enterprise Server-Instance einrichten, damit du dieses Feature verwenden kannst. Weitere Informationen findest du unter Aktivieren von Dependabot für dein Unternehmen.

Möglicherweise kannst du Dependabot updates nicht aktivieren oder deaktivieren, wenn ein Unternehmensbesitzer eine Richtlinie auf Unternehmensebene festgelegt hat. Weitere Informationen finden Sie unter Erzwingen von Richtlinien für die Codesicherheit und -analyse für Unternehmen.

Informationen zu Dependabot und GitHub Actions

Wichtig

Wenn Dependabot für ein Repository aktiviert ist, wird es immer in GitHub Actions ausgeführt, wobei die Actions-Richtlinienüberprüfungen und -Deaktivierung auf Repository- oder Organisationsebene umgangen wird. Dadurch wird sichergestellt, dass Workflows für Sicherheits- und Versionsupdates immer ausgeführt werden, wenn Dependabot aktiviert ist.

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

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@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
        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

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@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
        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@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
        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@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
        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}}

Hinweis

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.

Dependabot- und GitHub Actions-Richtlinien

Ob ein Workflow in einem Repository ausgeführt werden kann, hängt normalerweise von GitHub Actions-Richtlinienüberprüfungen und davon ab, ob GitHub Actions auf Organisationsebene aktiviert ist. Diese Kontrollen können die Ausführung von Workflows einschränken, insbesondere wenn externe Aktionen blockiert werden oder GitHub Actions vollständig deaktiviert ist.

Wenn Dependabot jedoch für ein Repository aktiviert ist, werden dessen Workflows immer in GitHub Actions ausgeführt, wobei die Actions-Richtlinienüberprüfungen und -Deaktivierung umgangen wird.

  • Dependabot-Workflows werden nicht durch die Actions-Deaktivierung oder Unternehmensrichtlinieneinschränkungen blockiert.
  • Die Aktionen, auf die in diesen Workflows verwiesen wird, können auch ausgeführt werden, auch wenn externe Aktionen nicht zulässig sind.

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.