Build über Befehlszeile und API senden

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 Ihr Dockerfile bereit.
  • Wenn Ihr Build Quellcode erfordert, halten Sie Ihren Quellcode bereit.

Erforderliche IAM-Berechtigungen

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 Build-Quellfeld ist eines der folgenden: storage_source, repo_source, git_source oder 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 das 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.
  • Initiiert einen Build am Speicherort us-west2 unter Verwendung der hochgeladenen Dateien als Eingabe;
  • 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, erstellt Cloud Build in diesem Projekt einen Cloud Storage-Bucket mit dem Namen [YOUR_PROJECT_NAME]_cloudbuild. 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 --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 der Name der komprimierten Quellcodedatei ist.

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:

  1. 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, der den zu erstellenden Quellcode enthält.
    • SOURCE der Name der komprimierten Quellcodedatei ist.
    • IMAGE_NAME ist der Name des Images, das erstellt werden soll.

    In dieser Build-Anfrage ruft Cloud Build den Build-Schritt docker mit den Argumenten build -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.

  2. Führen Sie den folgenden Befehl aus. Dabei ist PROJECT_ID Ihre 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/builds
    

    In diesem Befehl sendet curl in einem POST-Aufruf request.json für die API-Methode projects.builds.create an den Endpunkt builds.

    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 Feld metadata wird mithilfe der Build-Ressource modelliert. Der Status QUEUED zeigt an, dass der Build auf seine Ausführung wartet.

Builds mit connected_repository einreichen

gcloud

Führen Sie den folgenden Befehl aus, um eine Build-Anfrage mit der 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 Version, die aus dem Git-Repository abgerufen werden soll, z. B. ein Zweig, ein Tag, ein Commit-SHA oder eine 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 im Uploadverzeichnis der obersten Ebene keine .gcloudignore-Datei vorhanden ist, aber eine .gitignore-Datei, generiert die gcloud CLI eine Git-kompatible .gcloudignore-Datei, die Ihre .gitignore-ed-Dateien berücksichtigt. 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:

  1. 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 Version, die aus dem Git-Repository abgerufen werden soll, z. B. ein Zweig, ein Tag, ein Commit-SHA oder eine Git-Referenz.
    • IMAGE_NAME ist der Name des Images, das erstellt werden soll.

    In dieser Build-Anfrage ruft Cloud Build den Build-Schritt docker mit den Argumenten build -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 Registry-Namensformat.

  2. Führen Sie den folgenden Befehl aus. Dabei ist PROJECT_ID Ihre 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/builds
    

    In diesem Befehl sendet curl in einem POST-Aufruf request.json für die API-Methode projects.builds.create an den Endpunkt builds.

    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 Feld metadata wird mithilfe der Build-Ressource modelliert. Der Status QUEUED zeigt an, dass der Build auf seine Ausführung wartet.

Nächste Schritte