Build über die Befehlszeile und die 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 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:

  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, 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 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, 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-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 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:

  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 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 Argumente build -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.

  2. 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-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