Auf dieser Seite wird beschrieben, wie Sie mit der Google Cloud CLI und der Cloud Build API manuell einen Build in Cloud Build starten.
Hinweise
- Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren Sie die Google Cloud CLI.
- Wenn Sie Builds mit der Cloud Build-Konfiguration erstellen möchten, erstellen Sie eine Build-Konfigurationsdatei.
- Wenn Sie Builds mit einem
Dockerfile
erstellen möchten, halten Sie IhrDockerfile
bereit. - Wenn Ihr Build Quellcode erfordert, halten Sie Ihren Quellcode bereit.
Erforderliche IAM-Berechtigungen
- Wenn Sie Build-Logs im Standard-Log-Bucket speichern, benötigen Sie die Rollen Projektbetrachter und Cloud Build-Bearbeiter, um einen Build auszuführen.
- Wenn Sie Build-Logs im vom Nutzer erstellten Log-Bucket speichern, benötigen Sie die Rolle Cloud Build-Bearbeiter, um einen Build auszuführen.
- Wenn Sie private Pools verwenden, benötigen Sie die Rolle Cloud Build WorkerPool-Nutzer, um Ihre Builds auszuführen.
Anleitungen zum Erteilen von IAM-Rollen finden Sie unter Zugriff auf Cloud Build-Ressourcen konfigurieren.
Builds ausführen
Sie können die Quelle Ihres Builds im Feld Build-Quelle angeben. Das Feld „Build-Quelle“ hat einen der folgenden Werte: storage_source
, repo_source
, git_source
und connected_repository
.
Builds mit storage_source
einreichen
gcloud
Dockerfile verwenden:
Ihr Dockerfile
enthält alle Informationen, die Sie zum Erstellen eines Docker-Images mit Cloud Build benötigen.
Zum Ausführen einer Build-Anfrage mit Ihrem Dockerfile
führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich Ihr Anwendungscode, Dockerfile
und alle anderen Assets befinden:
gcloud builds submit --region=us-west2 --tag gcr.io/PROJECT_ID/IMAGE_NAME .
Wobei:
- PROJECT_ID ist der Name Ihres Google Cloud-Projekts.
- IMAGE_NAME ist der Name des Images, das erstellt werden soll.
- Sie können mit
.
angeben, dass sich der Quellcode im aktuellen Arbeitsverzeichnis befindet.
Der vollständige Name des zu erstellenden Images ist gcr.ioPROJECT_ID/IMAGE_NAME
. In Container Registry übertragene Images verwenden
Registry-Namensformat.
Führen Sie den Befehl gcloud builds submit
aus:
- Er komprimiert Ihren Anwendungscode, das
Dockerfile
und alle anderen Assets im aktuellen Verzeichnis wie durch.
angegeben. - Die Dateien werden in einen Cloud Storage-Bucket hochgeladen.
- Unter Verwendung der hochgeladenen Dateien als Eingabe wird ein Build am Speicherort
us-west2
initiiert. - Das Image wird mit dem bereitgestellten Namen getaggt.
- Das erstellte Image wird in Container Registry übertragen.
Der Fortschritt des Builds wird währenddessen im Shell- oder Terminalfenster ausgegeben. Nach Abschluss des Builds sollten Sie in etwa folgende Ausgabe sehen:
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2023-10-28T15:21:18+00:00 12S SUCCESS
Dabei ist $BUILD_ID
die eindeutige Kennung Ihres Builds.
Build-Konfigurationsdatei für Cloud Build verwenden:
Führen Sie den folgenden Befehl aus, um einen Build mit der Build-Konfiguration zu übertragen:
gcloud builds submit --region=us-west2 --config BUILD_CONFIG SOURCE
Wobei:
- BUILD_CONFIG ist der Pfad zur Build-Konfigurationsdatei.
- SOURCE ist der Pfad oder die URL zum Quellcode.
Wenn Sie gcloud builds submit
zum ersten Mal in einem Google Cloud-Projekt ausführen,
Cloud Build erstellt einen Cloud Storage-Bucket mit dem Namen [YOUR_PROJECT_NAME]_cloudbuild
an diesem Projekt beteiligt. Cloud Build verwendet diesen Bucket, um Quellcode zu speichern, den Sie für Ihre Builds verwenden können. Cloud Build löscht Inhalte in diesem Bucket nicht automatisch. Um Objekte zu löschen, die Sie nicht mehr für Builds verwenden, können Sie entweder die Lebenszykluskonfiguration für den Bucket einrichten oder die Objekte manuell löschen.
Der folgende Befehl zeigt, wie eine cloudbuild.yaml
-Build-Anfrage gesendet wird.
mithilfe von Quellcode, der in einem Cloud Storage-Bucket gespeichert ist.
gcloud builds submit --region=us-west2 --config cloudbuild.yaml \
gs://BUCKET/SOURCE.tar.gz
Wobei:
- BUCKET ist der Name des Buckets in Cloud Storage, der den zu erstellenden Quellcode enthält.
- SOURCE ist der Name der komprimierten Quellcodedatei.
Sie können mit .
angeben, dass sich der Quellcode im aktuellen Arbeitsverzeichnis befindet.
gcloud builds submit --region=us-west2 --config=cloudbuild.yaml .
API
So senden Sie die Build-Anfrage mit curl
:
Erstellen Sie eine Datei mit dem Namen
request.json
und mit folgendem Inhalt:{ "source": { "storageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] }], "images": [ "gcr.io/PROJECT_ID/IMAGE_NAME" ] }
Wobei:
- BUCKET ist der Name Ihres Cloud Storage-Buckets, das den zu kompilierenden Quellcode enthält.
- SOURCE ist der Name der komprimierten Quellcodedatei.
- IMAGE_NAME ist der Name des Images, das erstellt werden soll.
In dieser Build-Anfrage ruft Cloud Build den
docker
-Build-Schritt mit den Argumentenbuild -t gcr.io/$PROJECT_ID/IMAGE-NAME .
auf.Der vollständige Name des zu erstellenden Images ist
gcr.io/$PROJECT_ID/IMAGE_NAME
.In Container Registry übertragene Images verwenden das Regiytry-Namensformat.
Führen Sie den folgenden Befehl aus, wobei
PROJECT_ID
Ihre Google Cloud-Projekt-ID undREGION
eine der unterstützten Regionen ist:curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \ --format='value(credential.access_token)')" \ https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/builds
In diesem Befehl sendet
curl
in einem POST-Aufrufrequest.json
für die API-Methode projects.builds.create an den Endpunktbuilds
.Mit dem Befehl werden im Shell- oder Terminalfenster Details zum Build angezeigt. Als Ausgabe erhalten Sie in etwa die folgende JSON-Antwort:
{ "name": "operations/build/$PROJECT-ID/NmZhZW...", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": $BUILD-ID, "status": "QUEUED", "source": { "storageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" } }, "createTime": "2017-05-12T18:58:07.341526Z", "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "gcr.io/$PROJECT_ID/IMAGE_NAME" ], "projectId": $PROJECT-ID, "logsBucket": "gs://...", "sourceProvenance": { "resolvedStorageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" "generation": "..." } }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=$PROJECT_ID" } } }
Die JSON-Antwort wird mithilfe der
Operation
-Ressource in der Cloud Build API modelliert. Das Feldmetadata
wird mithilfe derBuild
-Ressource modelliert. Der StatusQUEUED
zeigt an, dass der Build auf seine Ausführung wartet.
Builds mit connected_repository
senden
gcloud
Führen Sie den folgenden Befehl aus, um einen Build-Antrag mit Build-Quelle aus einer Repository-Ressource der 2. Generation auszuführen:
gcloud builds submit REPOSITORY --revision=REVISION --config=BUILD_CONFIG --region=us-west2
Wobei:
- REPOSITORY ist der Name des Google Cloud Build-Repositorys der 2. Generation im Format
projects/*/locations/*/connections/*repositories/*
. - REVISION ist die Revision, die aus dem Git-Repository abgerufen werden soll, z. B. ein Branch, ein Tag, ein Commit-SHA oder eine beliebige Git-Referenz.
- BUILD_CONFIG ist der Pfad zur Build-Konfigurationsdatei.
Der Fortschritt des Builds wird währenddessen im Shell- oder Terminalfenster ausgegeben. Nach Abschluss des Builds sollten Sie in etwa folgende Ausgabe sehen:
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2023-10-28T15:21:18+00:00 12S SUCCESS
Dabei ist $BUILD_ID
die eindeutige Kennung Ihres Builds.
gcloudignore: Wenn Sie den Quellcode für den Build mit angeben, werden mit dem obigen Befehl alle Dateien im angegebenen Verzeichnis für den Build-Vorgang in die Google Cloud Platform hochgeladen. Wenn Sie bestimmte Dateien aus dem Verzeichnis ausschließen möchten, können Sie im übergeordneten Upload-Verzeichnis eine Datei mit dem Namen .gcloudignore
einfügen. Die darin angegebenen Dateien werden ignoriert. Wenn keine .gcloudignore
-Datei vorhanden ist
im Upload-Verzeichnis der obersten Ebene vorhanden ist, die Datei .gitignore
jedoch
Die gcloud CLI generiert eine Git-kompatible .gcloudignore
-Datei, die
respektiert Ihre .gitignore
-Dateien. Weitere Informationen finden Sie in der
Dokumentation zu gcloudignore
Wenn Sie keinen Quellcode haben, der an den Build übergeben werden soll, verwenden Sie das Flag --no-source
, wobei BUILD_CONFIG der Pfad zur Build-Konfigurationsdatei ist:
gcloud builds submit --region=us-west2 --config=BUILD_CONFIG --no-source
API
So senden Sie die Build-Anfrage mit curl
:
Erstellen Sie eine Datei mit dem Namen
request.json
und mit folgendem Inhalt:{ "source": { "connectedRepository": { "repository": "REPOSITORY", "revision": "REVISION" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] }], "images": [ "gcr.io/PROJECT_ID/IMAGE_NAME" ] }
Wobei:
- REPOSITORY ist der Name des Google Cloud Build-Repositorys der 2. Generation im Format
projects/*/locations/*/connections/*repositories/*
. - REVISION ist die Revision, die aus dem Git-Repository abgerufen werden soll, z. B. ein Branch, ein Tag, ein Commit-SHA oder eine beliebige Git-Referenz.
- IMAGE_NAME ist der Name des Images, das erstellt werden soll.
In dieser Build-Anfrage ruft Cloud Build den Build-Schritt
docker
auf durch die Argumentebuild -t gcr.io/PROJECT_ID/IMAGE_NAME .
.Der vollständige Name des zu erstellenden Images ist
gcr.io/PROJECT_ID/IMAGE_NAME
. In Container Registry übertragene Images verwenden Registry-Namensformat.- REPOSITORY ist der Name des Google Cloud Build-Repositorys der 2. Generation im Format
Führen Sie den folgenden Befehl aus, wobei
PROJECT_ID
Ihre Google Cloud-Projekt-ID und REGION eine der unterstützten Regionen ist:curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \ --format='value(credential.access_token)')" \ https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/builds
In diesem Befehl sendet
curl
in einem POST-Aufrufrequest.json
für die API-Methode projects.builds.create an den Endpunktbuilds
.Mit dem Befehl werden im Shell- oder Terminalfenster Details zum Build angezeigt. Als Ausgabe erhalten Sie in etwa die folgende JSON-Antwort:
{ "name": "operations/build/$PROJECT-ID/NmZhZW...", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": $BUILD-ID, "status": "QUEUED", "source": { "connectedRepository": { "repository": "REPOSITORY", "revision": "REVISION" } }, "createTime": "2017-05-12T18:58:07.341526Z", "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "gcr.io/PROJECT_ID/IMAGE_NAME" ], "projectId": PROJECT_ID, "logsBucket": "gs://...", "sourceProvenance": { "resolvedConnectedRepository": { "repository": "REPOSITORY", "revision": "REVISION.tar.gz" "generation": "..." } }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=PROJECT_ID" } } }
Die JSON-Antwort wird mithilfe der
Operation
-Ressource in der Cloud Build API modelliert. Das Feldmetadata
wird mithilfe derBuild
-Ressource modelliert. Der StatusQUEUED
zeigt an, dass der Build auf seine Ausführung wartet.