Auf dieser Seite wird erläutert, wie Sie mit Cloud Build Go-Anwendungen erstellen, testen und bereitstellen.
Hinweise
Die Anleitung auf dieser Seite setzt voraus, dass Sie mit Go vertraut sind. Außerdem gilt:
-
Enable the Cloud Build, Cloud Run, and Artifact Registry APIs.
- Zum Ausführen der
gcloud
-Befehle auf dieser Seite installieren Sie die Google Cloud CLI. - Halten Sie Ihr Go-Projekt bereit.
- Wenn Sie Ihre Go-Anwendung mit Cloud Build containerisieren möchten, benötigen Sie ein
Dockerfile
zusammen mit Ihrem Quellcode. - Wenn Sie den erstellten Container in Artifact Registry speichern möchten, erstellen Sie ein Docker-Repository in Artifact Registry.
- Wenn Sie Testlogs in Cloud Storage speichern möchten, erstellen Sie einen Bucket in Cloud Storage.
Erforderliche IAM-Berechtigungen
Weisen Sie zum Speichern von Testlogs in Logging dem Build-Dienstkonto die Rolle Storage-Objekt-Ersteller (
roles/storage.objectCreator
) für den Cloud Storage-Bucket zu.Zum Speichern erstellter Images in Artifact Registry gewähren Sie dem Artifact Registry-Autor Rolle (
roles/artifactregistry.writer
) mit Ihrem Build-Dienstkonto.
Eine Anleitung zum Zuweisen dieser Rollen finden Sie unter Rolle über die IAM-Seite zuweisen.
Go-Builds konfigurieren
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.
Dieser Abschnitt enthält eine Beispiel-Build-Konfigurationsdatei für eine Go-Anwendung. Die Anwendung umfasst Build-Schritte, um die Anwendung zu erstellen, Unittests hinzuzufügen und die Anwendung nach dem Bestehen der Tests zu containerisieren und bereitzustellen.
So erstellen Sie eine Go-Anwendung:
Erstellen Sie im Stammverzeichnis des Projekts eine Cloud Build-Konfigurationsdatei mit dem Namen
cloudbuild.yaml
.Erstellen und testen: Wenn Sie Unittests in Ihrer Anwendung definiert haben, können Sie Cloud Build so konfigurieren, dass die Tests ausgeführt werden. Fügen Sie dazu die folgenden Felder in einem Build-Schritt hinzu:
name
: Legen Sie den Wert dieses Felds aufgolang
fest, um das Golang-Image von Docker Hub für Ihre Aufgabe zu verwenden.entrypoint
: Legen Sie den Wert dieses Felds auf/bin/bash
fest. Auf diese Weise können Sie mehrzeilige Bash-Befehle direkt aus dem Build-Schritt ausführen.args
: Im Feldargs
eines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feldname
verwiesen wird. Im folgenden Beispiel verwendet das Feldargs
die Argumente für:- Ausführen des Testlog-Formatierers zum Herunterladen der Testlogausgabe.
- Ausgeben der Logausgabe.
- Speichern der Testergebnisse in
sponge.log
. - Ausgabe der Ergebnisse in
sponge.log
in eine JUnit-XML-Datei Der Name der JUnit-XML-Datei wird mit der kurzen Version der Commit-ID erstellt, die Ihrem Build zugeordnet ist. Bei einem nachfolgenden Build-Schritt werden die Logs in dieser Datei in Cloud Storage gespeichert.
Containerisieren der Anwendung: Nachdem Sie den Build-Schritt hinzugefügt haben, um sicherzustellen, dass die Tests bestanden haben, können Sie die Anwendung erstellen. Cloud Build bietet ein vordefiniertes Docker-Image, mit dem Sie Ihre Go-Anwendung containerisieren können. Fügen Sie in einem Build-Schritt die folgenden Felder hinzu, um Ihre Anwendung zu containerisieren:
name
: Legen Sie den Wert dieses Felds aufgcr.io/cloud-builders/docker
fest, um das vordefinierte Docker-Image für Ihre Aufgabe zu verwenden.args
: Fügen Sie die Argumente für den Befehldocker build
als Werte für dieses Feld hinzu.
Mit dem folgenden Build-Schritt wird das Image
myimage
erstellt und mit der kurzen Version Ihrer Commit-ID getaggt. Der Build-Schritt verwendet Substitutionen für Projekt-ID, Repository-Name und kurze SHA-Werte. Daher werden diese Werte bei der Build-Erstellung automatisch ersetzt. Beachten Sie, dass Sie zum Speichern des Images ein Docker-Repository in Artifact Registry erstellen oder ein vorhandenes erstellen müssen.Container in Artifact Registry hochladen: Sie können den erstellten Container in Artifact Registry speichern. Dies ist ein Google Cloud-Dienst, mit dem Sie Build-Artefakte speichern, verwalten und sichern können. Dazu benötigen Sie ein vorhandenes Docker-Repository in Artifact Registry. Um Cloud Build so zu konfigurieren, dass das Image in einem Artifact Registry-Docker-Repository gespeichert wird, fügen Sie einen Build-Schritt mit den folgenden Feldern hinzu:
name
: Legen Sie den Wert dieses Felds aufgcr.io/cloud-builders/docker
fest, um das offizielledocker
-Builder-Image für Ihre Aufgabe zu verwenden.args
: Fügen Sie die Argumente für den Befehldocker push
als Werte dieses Felds hinzu. Geben Sie für die Ziel-URL das Artifact Registry-Docker-Repository ein, in dem Sie das Image speichern möchten.
Mit dem folgenden Build-Schritt wird das Image, das Sie im vorherigen Schritt erstellt haben, per Push an Artifact Registry übertragen:
Container in Cloud Run bereitstellen: Um das Image in Cloud Run bereitzustellen, fügen Sie einen Build-Schritt mit den folgenden Feldern hinzu:
name
: Legen Sie den Wert dieses Felds aufgoogle/cloud-sdk
fest, um das gcloud CLI-Image zum Aufrufen des Befehlsgcloud
zu verwenden, damit das Image in Cloud Run bereitgestellt wird.args
: Fügen Sie die Argumente für den Befehlgcloud run deploy
als Werte dieses Felds hinzu.
Mit dem folgenden Build-Schritt wird das zuvor erstellte Image in Cloud Run bereitgestellt:
Testlogs in Cloud Storage speichern: Sie können Cloud Build so konfigurieren, dass alle Testlogs in Cloud Storage gespeichert werden. Geben Sie dazu einen vorhandenen Bucket-Speicherort und einen Pfad zu den Testlogs an.
Mit dem folgenden Build-Schritt werden die Testlogs, die Sie in der JUNIT-XML-Datei gespeichert haben, in einem Cloud Storage-Bucket gespeichert:
Das folgende Snippet zeigt die vollständige Build-Konfigurationsdatei für alle oben beschriebenen Schritte:
Build mit der gcloud CLI starten oder Trigger erstellen. Sie müssen den Namen des Artifact Registry-Repositorys angeben, wenn Sie die erstellen.
So geben Sie das Artifact Registry-Repository beim Starten des Builds mit der gcloud CLI an:
gcloud builds submit --region=us-west2 --config=cloudbuild.yaml \ --substitutions=_REPO_NAME="REPO_NAME"
Ersetzen Sie dabei
REPO_NAME
durch den Namen Ihres Artifact Registry-Repositorys.Wenn Sie das Artifact Registry-Repository beim Erstellen mit Build-Triggern angeben möchten, geben Sie dessen Namen im Feld Substitutionsvariablen an, wenn Sie den Build-Trigger erstellen.
Nächste Schritte
- Weitere Informationen zu Blau/Grün-Bereitstellungen in der Compute Engine
- Container-Images erstellen
- Build-Fehler beheben