Auf dieser Seite wird erläutert, wie Sie mit Cloud Build eine Go-Binärdatei erstellen und sie per Push an Cloud Storage übertragen. Wenn Sie Cloud Build noch nicht kennen, lesen Sie zuerst die Kurzanleitungen sowie die Übersicht über die Build-Konfiguration.
Mit Cloud Build können Sie jedes öffentlich verfügbare Container-Image zur Ausführung Ihrer Aufgaben verwenden. Sie können das öffentliche golang
-Image aus DockerHub in Ihrer Konfigurationsdatei verwenden, um Ihre Go-Anwendungen zu erstellen.
Hinweis
Die Anleitung auf dieser Seite setzt voraus, dass Sie mit Go
vertraut sind. Außerdem gilt:
- Sie benötigen den Quellcode der Go-Anwendung.
- Sie benötigen einen Cloud Storage-Bucket, um per Push die erstellte Go-Binärdatei zu übertragen. Eine Anleitung zum Erstellen eines Buckets finden Sie unter Storage-Buckets erstellen.
- Zum Ausführen der
gcloud
-Befehle auf dieser Seite müssen Sie dasgcloud
-Befehlszeilentool installieren.
Mit Go-Modulen erstellen
Go 1.11
bietet eine vorläufige Unterstützung für Module mit Versionsverwaltung.
Das öffentliche golang
-Image von Docker Hub unterstützt das Erstellen mithilfe von Go-Modulen. Wenn Sie dieses Image als Build-Schritt in Ihrer Cloud Build-Konfigurationsdatei verwenden, können Sie im Image go
-Befehle aufrufen. Argumente, die an diesen Build-Schritt übergeben werden, werden direkt an das golang
-Tool weitergegeben, sodass Sie in diesem Image alle go
-Befehle ausführen können.
So erstellen Sie eine Go-Anwendung:
[OPTIONAL, wenn Sie keine Go-Module verwenden] Go-Module initialisieren: Führen Sie im selben Verzeichnis, das den Quellcode der Anwendung enthält, den folgenden Befehl aus, um einen
GOPATH
anzugeben. Dies ermöglicht die Verwendung von Go-Modulen:go mod init [GOPATH]
Erstellen Sie eine Cloud Build-Konfigurationsdatei namens
cloudbuild.yaml
odercloudbuild.json
.Modul erstellen: Fügen Sie in der Konfigurationsdatei einen Build-Schritt hinzu, um den Befehl
go build
aufzurufen:YAML
# Build the module. steps: - name: golang args: ['go', 'build', '.']
JSON
{ "steps": [ { "name": "golang", "args": [ "go", "build", "." ] } ] }
Build-Artefakte speichern: Fügen Sie das Feld
artifacts
hinzu, um die Binärdatei in einem Cloud Storage-Bucket zu speichern.YAML
# Build the module. steps: - name: golang args: ['go', 'build', '.'] artifacts: objects: location: '[STORAGE_LOCATION]' paths: ['[ARTIFACT_PATH]']
JSON
{ "steps": [ { "name": "golang", "args": [ "go", "build", "." ] } ] "artifacts": { "objects": { "location": [ "[STORAGE_LOCATION]" ], "paths": [ "[ARTIFACT_PATH]" ] } } }
Dabei gilt:
[STORAGE_LOCATION]
ist ein Cloud Storage-Bucket oder ein Ordner im Bucket, in dem Cloud Build das Artefakt speichern muss, z. B.gs://mybucket
odergs://mybucket/some/folder
.[ARTIFACT_PATH]
: Pfad zu einem oder mehreren Artefakten.
Starten Sie mit der Build-Konfigurationsdatei den Build:
gcloud builds submit --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
Dabei gilt:
[CONFIG_FILE_PATH]
ist der Pfad zur Build-Konfigurationsdatei.[SOURCE_DIRECTORY]
ist der Pfad oder die URL zum Quellcode.
Wenn Sie
[CONFIG_FILE_PATH]
und[SOURCE_DIRECTORY]
im Befehlgcloud builds submit
nicht angeben, geht Cloud Build davon aus, dass sich die Konfigurationsdatei und der Quellcode im aktuellen Arbeitsverzeichnis befinden.