Blog

Erstellen eines Google Cloud SDK-Installationsprogramms für Azure Pipelines

Laurens Knoll

Aktualisiert Oktober 21, 2025
3 Minuten

Google Cloud CI/CD-Pipelines erfordern Google Cloud SDK. Azure Pipelines bietet jedoch keine Tool Installer-Aufgabe dafür an. Deshalb haben wir ihn erstellt. Sehen Sie sich alle Quellen auf GitHub an.

Google Cloud CI/CD mit Azure Pipelines

Das folgende Beispiel zeigt eine Pipeline, die einen Dienst auf App Engine bereitstellt. Zunächst wird das Google Cloud SDK mit unserem Tool-Installer installiert. Zweitens wird ein Dienstkonto konfiguriert und schließlich wird der Dienst in der App-Engine bereitgestellt. Dieser Blog erklärt, was unser Tool-Installer tut und wie er implementiert ist.

Azure Pipelines Tool Installateure

Azure Pipelines verwendet Aufgaben, um die Entwicklung von Pipelines zu vereinfachen. Anstatt CLI-Befehle anzugeben, konfiguriert ein Entwickler eine Aufgabe. Tool-Installer sind Aufgaben, die ein Tool wie Docker und Node installieren und aktivieren. Der Installationsprozess umfasst in der Regel das Herunterladen der benötigten Version, das Kopieren in den Tool-Cache und das Setzen der PATH-Variable.

Google Cloud SDK Tool Installer

Die Installation von Google Cloud SDK in einer kontinuierlichen Integrationsumgebung erfordert mehrere Schritte:

  • laden Sie die gewünschte Version herunter;
  • fügen Sie das Tool zu PATH hinzu;
  • Werkzeugkonfiguration anwenden. Unser Werkzeuginstallationsprogramm lädt das Werkzeug herunter und aktualisiert PATH. Schließlich weist es ein pipeline-spezifisches Konfigurationsverzeichnis zu, um sicherzustellen, dass Ihre Konfiguration zerstört wird, wenn die Pipeline endet. wendet keine andere Konfiguration an, da dies dem Entwickler überlassen bleibt. Die Aufgabe wird mit dem folgenden Node-Skript implementiert.
import * as tasks from 'azure-pipelines-task-lib';
import * as tools from 'azure-pipelines-tool-lib';
import * as path from 'path';

async function run() {
    try {
        let version = getVersion();
        await install(version);
        setConfigurationDirectory();
    }
    catch (err) {
        tasks.setResult(tasks.TaskResult.Failed, err);
    }
}

...

async function install(version: string) {
    // Install
    let toolPath = tools.findLocalTool('google-cloud-sdk', version);

    if (!toolPath) {
        toolPath = await downloadCloudSDK(version);
        tasks.debug("google-cloud-sdk tool is cached under " + toolPath);
    }

    toolPath = path.join(toolPath, 'bin');
    tools.prependPath(toolPath);
}

function setConfigurationDirectory() {
    // Store tool configuration folder in job-specific folder.
    let configPath = tasks.getVariable("CLOUDSDK_CONFIG");
    if (configPath) {
        console.log(`Reusing google-cloud-sdk configuration directory: ${configPath} (from CLOUDSDK_CONFIG)`);
    } else {
        let tempPath = tasks.getVariable('Agent.TempDirectory');
        if (!tempPath) {
            throw new Error("Expected Agent.TempDirectory to be set");
        }

        console.log(`Configured google-cloud-sdk configuration directory: ${tempPath}`);
        tasks.setVariable("CLOUDSDK_CONFIG", tempPath);
    }
}

...

run();

Alle Quellen auf GitHub anzeigen.

Die Aufgabe ausführen

Der Pipeline-Agent führt das Skript mit Node aus. Dabei wird die run-Methode aufgrund des run-Funktionsaufrufs in Zeile 49 ausgeführt.

run();

Installation des Google Cloud SDK

Die Zeilen 18-29 verwenden das Tool installer-package, um Google Cloud SDK zu holen oder zum Tool-Cache hinzuzufügen und PATH zu aktualisieren. Die Verwendung des Tool-Caches verhindert unnötige Downloads.

async function install(version: string) {
    // Install
    let toolPath = tools.findLocalTool('google-cloud-sdk', version);

    if (!toolPath) {
        toolPath = await downloadCloudSDK(version);
        tasks.debug("google-cloud-sdk tool is cached under " + toolPath);
    }

    toolPath = path.join(toolPath, 'bin');
    tools.prependPath(toolPath);
}

Das Konfigurationsverzeichnis festlegen

In den Zeilen 31-45 wird die Pipeline-Umgebungsvariable CLOUDSDK_CONFIG hinzugefügt, um sicherzustellen, dass die Konfiguration nur für diese Pipeline verfügbar ist. Es verwendet das Task Library-Paket zum Abrufen und Aktualisieren der Pipeline-Umgebung.

function setConfigurationDirectory() {
    // Store tool configuration folder in job-specific folder.
    let configPath = tasks.getVariable("CLOUDSDK_CONFIG");
    if (configPath) {
        console.log(`Reusing google-cloud-sdk configuration directory: ${configPath} (from CLOUDSDK_CONFIG)`);
    } else {
        let tempPath = tasks.getVariable('Agent.TempDirectory');
        if (!tempPath) {
            throw new Error("Expected Agent.TempDirectory to be set");
        }

        console.log(`Configured google-cloud-sdk configuration directory: ${tempPath}`);
        tasks.setVariable("CLOUDSDK_CONFIG", tempPath);
    }
}

Starten Sie mit dem Tool Installer

Holen Sie sich den Task vom Marketplace und bitten Sie Ihren Administrator, ihn zu installieren... Oder bauen Sie ihn selbst. Klonen Sie das Quell-Repository und führen Sie es aus:

npm ci
npx task release google google-cloud-sdk

Verfasst von

Laurens Knoll

As a cloud consultant I enjoy improving what your company does best. I enable your business using cloud technology and enable your engineers by applying software engineering practices to your infrastructure domain.

Contact

Let’s discuss how we can support your journey.