Was ist GitHub Script?

Abgeschlossen

In dieser Lerneinheit erfahren Sie, wie Sie mit GitHub Script häufige GitHub-Prozesse mithilfe von GitHub Actions-Workflows automatisieren.

Was ist GitHub Script?

GitHub Script ist eine Aktion, die einen authentifizierten octokit-Client bereitstellt und das direkte Schreiben von JavaScript in eine Workflowdatei ermöglicht. Diese Aktion wird in Node.js ausgeführt, sodass Sie die Leistungsfähigkeit dieser Plattform beim Schreiben von Skripts nutzen können.

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 REST-Schnittstelle von GitHub.

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. Sie haben nicht nur Zugriff auf Commits, Pull Requests und Issues, sondern auch 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 mit GitHub-Integration erstellen, ist die Wahrscheinlichkeit hoch, dass Sie in der vollständigen Dokumentation für octokit/rest.js finden, was Sie suchen.

Wie unterscheidet sich die Verwendung von GitHub Script von der von octokit/rest.js?

Der Hauptunterschied besteht darin, dass GitHub Script einen vorab authentifizierten octokit/rest.js-Client namens github bereitstellt.

Anstelle von:

octokit.issues.createComment({

Sie würden Folgendes verwenden:

github.issues.createComment({

Zusätzlich zur Variable github werden auch die folgenden Variablen bereitgestellt:

Erstellen eines Workflows mit Verwendung von GitHub Script

GitHub Script-Aktionen können wie jede andere Aktion in einem Workflow verwendet werden. Folglich können Sie sie sogar mit bereits vorhandenen Workflows kombinieren, z. B. mit solchen, die Sie möglicherweise bereits für CI/CD eingerichtet haben. Im Folgenden soll veranschaulicht werden, wie komfortabel die Verwendung von GitHub Script ist. Hierfür erstellen Sie einen vollständigen Workflow, der mithilfe von GitHub Script bei allen neu erstellten Issues automatisch einen Kommentar postet.

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 unter Linux ausgeführten Auftrag mit einer Reihe von Schritten namens comment.

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. Sie sollten ihr dafür danken, dass sie Sie darauf aufmerksam gemacht hat. Diese einfache Aufgabe kann jedoch zeitaufwendiger werden, wenn die Anzahl der Besucher*innen Ihres Repositorys zunimmt. Durch die Automatisierung eines Issuekommentars können Sie den Vorgang automatisieren, mit dem Sie jedes Mal Ihren Dank aussprechen.

Verwenden von actions/github-script@0.8.0

Die Aktion actions/github-script@0.8.0, auch GitHub Script genannt, übernimmt den Großteil der Arbeit bei der Integration mit der GitHub-API.

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.

Nach dem Ausführen des Workflows protokolliert GitHub Script den ausgeführten Code zur Überprüfung auf der Registerkarte Actions (Aktionen).

Screenshot of a completed workflow using GitHub Script.

Ausführen aus einer separaten Datei

Manchmal ist in Ihrem GitHub Script-Szenario möglicherweise sehr viel Code erforderlich. 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.

Beispiel für einen einfachen Workflow mit dieser Vorgehensweise:

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.