Auf dieser Seite wird beschrieben, wie Sie mit der Google Cloud CLI und der Cloud Build API manuell einen Build in Cloud Build starten.
Hinweis
- Wenn Sie Builds mit der Cloud Build-Konfiguration erstellen möchten, erstellen Sie eine Build-Konfigurationsdatei.
- Halten Sie den Quellcode Ihrer Anwendung und die
Dockerfile-Datei bereit. - Erstellen Sie ein Docker-Repository in Artifact Registry, um Images zu speichern, oder verwenden Sie ein vorhandenes Repository.
Erforderliche IAM-Berechtigungen
Damit die erforderlichen Berechtigungen zum Senden von Builds hat, bitten Sie Ihren Administrator, die folgenden IAM-Rollen für Ihr Dienstkonto zuzuweisen:
-
Build-Logs im Standard-Logs-Bucket speichern:
Cloud Build-Bearbeiter (
roles/cloudbuild.builds.editor) -
Build-Logs im vom Nutzer erstellten Logs-Bucket speichern:
Cloud Build-Bearbeiter (
roles/cloudbuild.builds.editor) -
Private Pools verwenden:
Nutzer von Cloud Build-WorkerPools (
roles/cloudbuild.workerPoolUser)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Ihr Administrator kann die erforderlichen Berechtigungen möglicherweise auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erteilen.
Builds ausführen
Sie können die Quelle Ihres Builds im Feld Build-Quelle angeben. Das Feld **Build-Quelle** kann einen der folgenden Werte haben: storage_source, repo_source, git_source und connected_repository.
Builds mit storage_source senden
gcloud
Dockerfile verwenden:
Ihr Dockerfile enthält alle Informationen, die Sie zum Erstellen eines Docker-Images mit Cloud Build benötigen.
Führen Sie zum Erstellen mit einem Dockerfile den folgenden Befehl aus dem Verzeichnis aus, das Ihren Quellcode und das Dockerfile enthält:
gcloud builds submit --tag LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME
Wobei:
- LOCATION: der regionale oder multiregionale Speicherort Ihres Docker-Repositorys in Artifact Registry.
- PROJECT_ID: Ihre Google Cloud Projekt-ID.
- REPOSITORY: der Name Ihres Artifact Registry-Repositorys.
- IMAGE_NAME: der Name des zu erstellenden Container-Images.
Der vollständige Name des zu erstellenden Images ist
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME.
In Artifact Registry übertragene Images verwenden die
Artifact Registry-Namenskonvention.
Der Befehl gcloud builds submit:
- komprimiert Ihren Anwendungscode, das
Dockerfileund alle anderen Assets im aktuellen Verzeichnis wie durch.angegeben. - initiiert einen Build am Speicherort
LOCATIONunter Verwendung der hochgeladenen Dateien als Eingabe. - taggt das Image mit dem bereitgestellten Namen.
- überträgt das erstellte Image in Artifact Registry.
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 --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,
erstellt Cloud Build einen Cloud Storage-Bucket mit dem Namen [YOUR_PROJECT_NAME]_cloudbuild
in diesem Projekt. 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 Sie eine cloudbuild.yaml-Build-Anfrage mit Quellcode senden, der in einem Cloud Storage-Bucket gespeichert ist.
gcloud builds submit --config cloudbuild.yaml \
gs://BUCKET/SOURCE.tar.gz
Wobei:
- BUCKET der Name Ihres Buckets in Cloud Storage ist, der den Quellcode für den Build enthält.
- SOURCE der Name Ihrer komprimierten Quellcodedatei ist.
Sie können mit . angeben, dass sich der Quellcode im aktuellen Arbeitsverzeichnis befindet:
gcloud builds submit --config=cloudbuild.yaml .
API
So senden Sie die Build-Anfrage mit curl:
Erstellen Sie eine Datei mit dem Namen
request.jsonund mit folgendem Inhalt:{ "source": { "storageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] }], "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME" ] }Wobei:
- BUCKET der Name Ihres Cloud Storage-Buckets ist, der den Quellcode für den Build enthält.
- SOURCE der Name Ihrer komprimierten Quellcodedatei ist.
- IMAGE_NAME der Name des zu erstellenden Images ist.
- LOCATION: der regionale oder multiregionale Speicherort Ihres Docker-Repositorys in Artifact Registry.
- PROJECT_ID: Ihre Google Cloud Projekt-ID.
- REPOSITORY der Name Ihres Docker-Repositorys in Artifact Registry ist.
In dieser Build-Anfrage ruft Cloud Build den
dockerBuild-Schritt mit den Argumentenbuild -t LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY .auf.Der vollständige Name des zu erstellenden Images ist
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY.In Artifact Registry übertragene Images verwenden die Artifact Registry-Namenskonvention.
Führen Sie den folgenden Befehl aus. Dabei ist
PROJECT_IDIhre Google Cloud Projekt-ID undREGIONeine der unterstützten Regionen: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/buildsIn diesem Befehl sendet
curlrequest.jsonin einem POST-Aufruf für die API-Methode projects.builds.create an denbuildsEndpunkt.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", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/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 Feldmetadatawird mithilfe derBuild-Ressource modelliert. Der StatusQUEUEDzeigt an, dass der Build auf seine Ausführung wartet.
Builds mit connected_repository senden
gcloud
Führen Sie den folgenden Befehl aus, um eine Build-Anfrage mit einer Build-Quelle aus einer Repository-Ressource der 2. Generation auszuführen:
gcloud builds submit REPOSITORY --revision=REVISION --config=BUILD_CONFIG LOCATION
Wobei:
- LOCATION: der regionale oder multiregionale Speicherort Ihres Docker-Repositorys in Artifact Registry.
- REPOSITORY der Name des Cloud Build-Repositorys der 2. Generation im Format
projects/*/locations/*/connections/*/repositories/*ist. - REVISION die Revision ist, die aus dem Git-Repository abgerufen werden soll, z. B. ein Zweig, ein Tag, eine Commit-SHA oder eine beliebige Git-Referenz.
- BUILD_CONFIG der Pfad zur Build-Konfigurationsdatei ist.
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 auch den Quellcode für den Build angeben, werden mit dem vorherigen
Befehl alle Dateien im angegebenen Verzeichnis für den Build-Vorgang auf Google Cloud
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 im übergeordneten Upload-Verzeichnis keine .gcloudignore-Datei vorhanden ist, dafür aber eine .gitignore-Datei, generiert die gcloud CLI eine mit Git kompatible .gcloudignore-Datei, in der die von Ihnen in .gitignore ignorierten Dateien berücksichtigt werden. Weitere Informationen finden Sie in der
gcloudignore Dokumentation.
Wenn Sie keinen Quellcode haben, der an den Build übergeben werden soll, verwenden Sie das --no-source
Flag. Dabei ist BUILD_CONFIG der Pfad zur Build
Konfigurationsdatei:
gcloud builds submit --config CONFIG_FILE_PATH SOURCE_DIRECTORY
API
So senden Sie die Build-Anfrage mit curl:
Erstellen Sie eine Datei mit dem Namen
request.jsonund mit folgendem Inhalt:{ "source": { "connectedRepository": { "repository": "REPOSITORY", "revision": "REVISION" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] }], "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME" ] }Wobei:
- REPOSITORY der Name des Cloud Build-Repositorys der 2. Generation im Format
projects/*/locations/*/connections/*repositories/*ist. - REVISION die Revision ist, die aus dem Git-Repository abgerufen werden soll, z. B. ein Zweig, ein Tag, eine Commit-SHA oder eine beliebige Git-Referenz.
- IMAGE_NAME der Name des zu erstellenden Images ist.
- LOCATION: der regionale oder multiregionale Speicherort Ihres Docker-Repositorys in Artifact Registry.
- PROJECT_ID: Ihre Google Cloud Projekt-ID.
In dieser Build-Anfrage ruft Cloud Build den
dockerBuild-Schritt mit den Argumentenbuild -t LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME .auf.Der vollständige Name des zu erstellenden Images ist
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME. In Artifact Registry übertragene Images verwenden die Artifact Registry-Namenskonvention.- REPOSITORY der Name des Cloud Build-Repositorys der 2. Generation im Format
Führen Sie den folgenden Befehl aus. Dabei ist
PROJECT_IDIhre Google Cloud Projekt-ID und REGION eine der unterstützten Regionen: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/buildsIn diesem Befehl sendet
curlrequest.jsonin einem POST-Aufruf für die API-Methode projects.builds.create an denbuildsEndpunkt.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", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/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 Feldmetadatawird mithilfe derBuild-Ressource modelliert. Der StatusQUEUEDzeigt an, dass der Build auf seine Ausführung wartet.
Nächste Schritte
- Manuelle Trigger erstellen.
- Erfahren Sie, wie Sie Build-Ergebnisse anzeigen.
- Build-Fehler beheben