Hinweis
In diesem Artikel wird erläutert, wie Sie mit Dependabot Aufgaben im Zusammenhang mit GitHub Actions automatisieren. Weitere Informationen zum Ausführen von Dependabot updates mit GitHub Actions finden Sie unter Dependabot auf GitHub Actions-Runnern.
Sie können GitHub Actions verwenden, um automatisierte Aufgaben auszuführen, wenn Dependabot Pull Requests zum Aktualisieren der Abhängigkeiten erstellt. Dies kann hilfreich sein, wenn deine Pläne wie folgt aussehen:
-
Stellen Sie sicher, dass Dependabot Pull-Anforderungen (Versionsupdates und Sicherheitsupdates) mit den richtigen Daten für Ihre Arbeitsprozesse erstellt werden, einschließlich Bezeichnungen und Namen.
-
Lösen Sie Workflows aus, um Dependabot Pull Requests (Versionsupdates und Sicherheitsupdates) in Ihren Prüfprozess einzuspeisen oder automatisch zusammenzuführen.
Über Dependabot und GitHub Actions
Wichtig
Wenn Dependabot für ein Repository aktiviert ist, wird es immer auf GitHub Actions ausgeführt, wobei sowohl Actions-Richtlinienprüfungen als auch die 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 Pullanforderungen, um Ihre Abhängigkeiten auf dem neuesten Stand zu halten. Sie können verwenden GitHub Actions , um automatisierte Aufgaben auszuführen, wenn diese Pullanforderungen 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 finden Sie unter Fehlerbehebung für Dependabot in GitHub Actions.
Im Folgenden finden Sie mehrere häufige Szenarien für Pull Requests, die sich mithilfe von GitHub Actions automatisieren lassen.
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. Sie können eine Aktion verwenden, um Informationen zu den Abhängigkeiten abzurufen, die durch einen von Dependabot generierten Pull Request aktualisiert werden.
Example:
# 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 im dependabot/fetch-metadata-Repository.
Kennzeichnung eines Pull-Requests
Wenn Sie über andere Automatisierungs- oder Triageworkflows verfügen, die auf GitHub Bezeichnungen basieren, können Sie eine Aktion konfigurieren, um Bezeichnungen basierend auf den bereitgestellten Metadaten zuzuweisen.
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
Sie können Dependabot Pull Requests automatisch genehmigen, indem Sie in einem Workflow das GitHub CLI verwenden.
Example:
# 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 Sie Maintainern erlauben möchten, bestimmte Pull Requests für das automatische Zusammenführen zu markieren, können Sie die GitHub-Automerge-Funktionalität verwenden. 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.
Sie können stattdessen GitHub Actions und das 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 Sie Statusprüfungen verwenden, um Pull Requests zu testen, sollten Sie für den Ziel-Branch von **** Pull Requests Dependabot aktivieren. Diese Branch-Schutzregel stellt sicher, dass Pull-Requests nur dann zusammengeführt werden, wenn alle erforderlichen Statusprüfungen bestanden wurden. Weitere Informationen findest du unter Verwalten einer Branchschutzregel.
Wenn der Ziel-Branch eine Merge-Warteschlange verwendet, kann das integrierte GITHUB_TOKEN keine Pull Requests zur Merge-Warteschlange hinzufügen. In diesem Fall müssen Sie den Workflow mit einem personal access token oder einem GitHub App Token authentifizieren, das über die Berechtigung zum Zusammenführen verfügt, und ihn anstelle des GITHUB_TOKEN``gh pr merge Schritts verwenden.
Dependabot und GitHub Actions Richtlinien
Normalerweise hängt davon ab, ob ein Workflow in einem Repository ausgeführt werden kann, von GitHub ActionsRichtlinienüberprüfungen und ob GitHub Actions er auf Organisation- oder Repositoryebene aktiviert ist. Diese Steuerelemente können die Ausführung von Workflows einschränken– insbesondere, wenn externe Aktionen blockiert oder GitHub Actions vollständig deaktiviert sind.
Wenn Dependabot jedoch für ein Repository aktiviert ist, werden seine Workflows immer auf GitHub Actions ausgeführt, wodurch sowohl Actions-Richtlinienprüfungen als auch die Deaktivierung umgangen werden.
- Dependabot Workflows werden weder durch die Deaktivierung von Actions noch durch Einschränkungen durch Unternehmensrichtlinien blockiert.
- Die Aktionen, auf die in diesen Workflows verwiesen wird, können auch ausgeführt werden, auch wenn externe Aktionen nicht zulässig sind.
Weitere Informationen findest du unter Dependabot auf GitHub Actions-Runnern.
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. - Ihre Geheimnisse sind als Dependabot Geheimnisse statt als GitHub Actions Geheimnisse verfügbar.
- Du verfügst über ein
GITHUB_TOKENmit den richtigen Berechtigungen.
Informationen zum Schreiben und Debuggen GitHub Actionsfinden Sie unter Schreiben von Workflows.
Weitere Tipps zum Lösen von Problemen mit Workflows findest du unter Fehlerbehebung für Dependabot in GitHub Actions.