Skip to main content

Entwickeln einer Aktion für eine Drittanbieter-CLI

Erfahre, wie du eine Aktion entwickeln kannst, um eine CLI für GitHub Actions-Runner einzurichten.

Einführung

Du kannst eine Aktion schreiben, um Benutzern über eine konfigurierte CLI-Umgebung auf GitHub Actions-Runnern den Zugriff auf deine Server zu gewähren.

Deine Aktion sollte folgende Vorgaben erfüllen:

  • Sie sollte Benutzer*innen die einfache Angabe der zu installierenden CLI-Version ermöglichen.
  • Sie sollte mehrere Betriebssysteme unterstützen.
  • Sie sollte effizient ausgeführt werden, um Laufzeiten und zugehörige Kosten zu minimieren.
  • Sie sollte sowohl auf von GitHub gehosteten als auch auf selbstgehosteten Runnern funktionieren.
  • Sie sollte nach Möglichkeit Communitytools nutzen.

In diesem Artikel wird veranschaulicht, wie eine Aktion geschrieben wird, die eine bestimmte Version deiner CLI abruft, installiert, dem Pfad hinzufügt und (optional) zwischenspeichert. Diese Art von Aktion (eine Aktion zum Einrichten eines Tools) wird häufig mit setup-$TOOL benannt.

Voraussetzungen

Du solltest wissen, wie eine benutzerdefinierte Aktion geschrieben wird. Weitere Informationen findest du unter Informationen zu benutzerdefinierten Aktionen. Eine ausführlichere Anleitung zum Schreiben einer benutzerdefinierten Aktion findest du unter Creating a JavaScript action (Erstellen einer JavaScript-Aktion).

Beispiel

Das folgende Skript veranschaulicht, wie du eine vom Benutzer angegebene Version als Eingabe abfragst, die entsprechende Version deiner CLI herunterlädst und extrahierst und die CLI dann dem Pfad hinzufügst.

GitHub stellt actions/toolkit bereit. Dabei handelt es sich um eine Reihe von Paketen, die dir beim Erstellen von Aktionen helfen. In diesem Beispiel werden die Pakete actions/core und actions/tool-cache verwendet.

JavaScript
const core = require('@actions/core');
const tc = require('@actions/tool-cache');

async function setup() {
  // Get version of tool to be installed
  const version = core.getInput('version');

  // Download the specific version of the tool, e.g. as a tarball
  const pathToTarball = await tc.downloadTool(getDownloadURL());

  // Extract the tarball onto the runner
  const pathToCLI = await tc.extractTar(pathToTarball);

  // Expose the tool by adding it to the PATH
  core.addPath(pathToCLI)
}

module.exports = setup

Um dieses Skript zu verwenden, ersetze getDownloadURL durch eine Funktion, die deine CLI herunterlädt. Du musst auch eine Metadatendatei für Aktionen erstellen (action.yml), die eine version-Eingabe akzeptiert und dieses Skript ausführt. Ausführliche Informationen zum Erstellen einer Aktion findest du unter Creating a JavaScript action (Erstellen einer JavaScript-Aktion).

Weitere Informationen

Dieses Muster wird in mehreren Aktionen verwendet. Weitere Beispiele findest du hier: