Was ist GitHub Script?
In dieser Lektion erfahren Sie, wie Sie mit GitHub Script allgemeine GitHub-Prozesse mithilfe von GitHub Actions-Workflows automatisieren können.
Was ist GitHub Script?
GitHub Script ist eine Aktion, die einen authentifizierten Octokit-Client bereitstellt und javaScript direkt in einer Workflowdatei geschrieben werden kann. Sie wird in Node.jsausgeführt, sodass Sie beim Schreiben von Skripts über die Leistungsfähigkeit dieser Plattform verfügen.
Was ist Octokit?
Octokit ist die offizielle Sammlung von Clients für die GitHub-API. Einer dieser Clients, rest.js, bietet JavaScript-Zugriff auf die GitHub-REST-Schnittstelle.
Es war schon immer möglich, die GitHub-API über octokit/rest.js zu automatisieren, auch wenn die ordnungsgemäße Einrichtung und Wartung äußerst aufwendig sein konnte. Einer der großen Vorteile der Verwendung von GitHub Script ist, dass diese Aktion diesen gesamten Verwaltungsaufwand übernimmt, sodass Sie sofort mit der Verwendung der API beginnen können. Sie müssen sich keine Gedanken über Abhängigkeiten, Konfiguration oder Authentifizierung machen.
Was kann octokit/rest.js?
Kurz gesagt, können Sie damit so gut wie alle Aufgaben für eine Automatisierung von GitHub durchführen. Zusätzlich zum Zugriff auf Commits, Pullanforderungen und Probleme haben Sie auch Zugriff auf Benutzer, Projekte und Organisationen. Sie können Listen mit häufig verwendeten Dateien wie beliebten Lizenzen oder .gitignore-Dateien abrufen und sogar Markdown rendern.
Wenn Sie etwas erstellen, das GitHub integriert, sind die Chancen gut, dass Sie in der vollständigen Octokit/rest.js Dokumentation finden, wonach Sie suchen.
Wie unterscheidet sich die Verwendung von GitHub Script von der von octokit/rest.js?
Der Hauptunterschied bei der Verwendung besteht darin, dass GitHub Script einen vorautorierten Octokit/rest.js-Client mit dem Namen githubbereitstellt.
Also anstelle von
octokit.issues.createComment({
verwenden Sie
github.issues.createComment({.
Zusätzlich zur Variable github werden auch die folgenden Variablen bereitgestellt:
-
contextist ein Objekt, das den Kontext der Workflowausführung enthält. -
coreist ein Verweis auf das Paket @actions/core. -
ioist ein Verweis auf das Paket @actions/io.
Erstellen eines Workflows, der GitHub-Skript verwendet
GitHub Script-Aktionen können wie jede andere Aktion in einem Workflow verwendet werden. Daher können Sie sie sogar mit vorhandenen Workflows kombinieren, z. B. solche, die Sie möglicherweise bereits für CI/CD eingerichtet haben. Um den Komfort von GitHub Script zu veranschaulichen, erstellen Sie jetzt einen vollständigen Workflow, der ihn verwendet, um automatisch einen Kommentar an alle neu erstellten Probleme zu posten.
Sie beginnen mit einer name- und einer on-Klausel, die festlegt, dass dieser Workflow ausgeführt wird, wenn Issues geöffnet werden:
name: Learning GitHub Script
on:
issues:
types: [opened]
Als Nächstes definieren Sie einen Auftrag mit dem Namen comment , der unter Linux ausgeführt wird, mit einer Reihe von Schritten:
jobs:
comment:
runs-on: ubuntu-latest
steps:
In diesem Fall gibt es nur einen Schritt: die GitHub Script-Aktion.
- uses: actions/github-script@0.8.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "🎉 You've created this issue comment using GitHub Script!!!"
})
Die Verwendung von GitHub Actions kann dabei helfen, die Ereignisse in Ihren Repositorys zu automatisieren. Stellen Sie sich vor, eine Person, die Ihr Repository nutzt, hat ein neues Issue mit Informationen zu einem kritischen Fehler geöffnet. Vielleicht möchten Sie ihnen danken, dass sie Sie auf den Fehler aufmerksam machen, aber durch zunehmende Besucherzahlen Ihres Repository kann diese einfache Aufgabe überwältigend werden. Durch die Automatisierung eines Problemkommentars können Sie den Prozess, sich bei Besuchern zu bedanken, jedes Mal automatisieren.
Verwenden von actions/github-script@0.8.0
Die actions/github-script@0.8.0 Aktion, auch als GitHub-Skript bezeichnet, führt alle schwierigen Aufgaben für Ihre Integration mit der GitHub-API durch.
Diese Aktion erfordert ein github-token, das zur Laufzeit bereitgestellt wird, um Anforderungen zu authentifizieren. Dies wird automatisch für Sie erledigt, sodass Sie diesen Code unverändert übernehmen können.
Der Wert für den script-Parameter kann so gut wie alles in JavaScript sein, das den auf github gespeicherten octokit/rest.js-Client verwendet. In diesem Fall handelt es sich um nur eine Zeile (zur besseren Lesbarkeit auf mehrere Zeilen aufgeteilt), die einen hartcodierten Kommentar erstellt.
Nachdem der Workflow ausgeführt wurde, protokolliert GitHub Script den Code, der auf der Registerkarte "Aktionen " zur Überprüfung ausgeführt wurde:
Ausführen aus einer separaten Datei
Möglicherweise müssen Sie manchmal einen erheblichen Code verwenden, um Ihr GitHub-Skriptszenario zu erfüllen. In einem solchen Fall können Sie anstelle der Wiedergabe des gesamten Skripts im Workflow das Skript in einer separaten Datei speichern und im Workflow darauf verweisen.
Hier ist ein Beispiel für einen einfachen Workflow, der diese Technik verwendet:
on: push
jobs:
echo-input:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/github-script@v2
with:
script: |
const path = require('path')
const scriptPath = path.resolve('./path/to/script.js')
console.log(require(scriptPath)({context}))
Sehen Sie sich weitere GitHub Script-Beispiele an.