Du kannst GitHub Actions verwenden, um automatisierte Aufgaben auszuführen, wenn Dependabot Pull-Requests zur Aktualisierung 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 werden. 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. Du kannst zum Beispiel zusätzliche Artefakte abrufen, Bezeichnungen hinzufügen, Tests ausführen oder den Pull-Request anderweitig verändern.
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 für Dependabot auf GitHub Actions.
Hier sind einige gängige Szenarien für Pull-Requests, die mit GitHub Actions automatisiert werden können.
Abrufen von Metadaten über eine Pull-Request-Anfrage
Für die meisten Automatisierungen brauchst du Informationen über den Inhalt der Pull-Request: den Namen der Abhängigkeit, ob es sich um eine Produktionsabhängigkeit handelt und ob es sich um ein Major-, Minor- oder Patching-Update handelt. Mit einer Aktion kannst du Informationen über die Abhängigkeiten abrufen, die durch einen von Dependabot generierten Pull-Request aktualisiert werden.
Beispiel:
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
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
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
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 unter dem dependabot/fetch-metadata Repository.
Kennzeichnung eines Pull-Requests
Wenn du andere Automatisierungs- oder Sichtung-Workflows hast, die auf GitHub Kennzeichnungen basieren, kannst du eine Aktion konfigurieren, die Kennzeichnungen auf der Grundlage der bereitgestellten Metadaten zuweist.
Beispiel, das alle Aktualisierungen von Abhängigkeiten in der Produktion mit einem Flag kennzeichnet:
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
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}}
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
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 Dependabot Pull-Requests automatisch genehmigen, indem du den GitHub CLI in einem Workflow verwendest.
Beispiel:
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
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}}
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
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}}
Automerge für eine Pull-Request-Anfrage aktivieren
Wenn du Maintainern die Möglichkeit bieten willst, bestimmte Pull-Requests für den Automerge zu markieren, kannst du die Automerge-Funktion 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. Hier ist ein Beispiel, das alle Patch-Updates automatisch nach my-dependency zusammenführt:
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
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}}
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
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 Statusprüfungen zum Testen von Pull-Requests verwendest, solltest du für Dependabot Pull-Requests für den Ziel Branch die Option Require status checks to pass before merging aktivieren. Diese Branch-Schutzregel stellt sicher, dass Pull-Requests nur dann zusammengeführt werden, wenn alle erforderlichen Statusprüfungen bestanden wurden. 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
reffür denpull_requestaus. - Die Geheimnisse sind in Dependabot-Geheimnissen und nicht als GitHub Actions-Geheimnisse verfügbar.
- Du verfügst über ein
GITHUB_TOKENmit den richtigen Berechtigungen.
Informationen zum Schreiben und Debuggen von GitHub Actions findest du unter Schreiben von Workflows.
Weitere Tipps zum Lösen von Problemen mit Workflows findest du unter Problembehandlung für Dependabot auf GitHub Actions.