Build über die Befehlszeile und die API starten

Auf dieser Seite wird beschrieben, wie Sie mit dem gcloud-Befehlszeilentool und der Cloud Build API manuell einen Build in Cloud Build starten.

Hinweis

Erforderliche IAM-Berechtigungen

Eine Anleitung zum Zuweisen von IAM-Rollen finden Sie unter Zugriff auf Cloud Build-Ressourcen konfigurieren.

Builds ausführen

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 --tag gcr.io/project-id/image-name .

Wobei:

  • project-id ist der Name Ihres 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.io/project-id/image-name. Per Push 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.
  • Unter Verwendung der hochgeladenen Dateien als Eingabe wird ein Build 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                             2016-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-code

wobei

  • build-config ist der Pfad zur Build-Konfigurationsdatei.
  • source-code ist der Pfad oder die URL zum Quellcode.

Wenn Sie gcloud builds submit zum ersten Mal in einem 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.

Mit dem folgenden Befehl wird die Build-Anfrage cloudbuild.yaml mit dem in einem Cloud Storage-Bucket gespeicherten archivierten Quellcode gesendet.

    gcloud builds submit --config cloudbuild.yaml \
        gs://cloud-build-examples/node-docker-example.tar.gz

Sie können mit . angeben, dass sich der Quellcode im aktuellen Arbeitsverzeichnis befindet.

    gcloud builds submit --config cloudbuild.yaml .

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 übergeordneten Upload-Verzeichnis keine .gcloudignore-Datei vorhanden ist, dafür aber eine .gitignore-Datei, generiert das gcloud-Tool eine mit Git kompatible .gcloudignore-Datei, in der die von Ihnen in .gitignore ignorierten Dateien berücksichtigt werden. 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 --config build-config --no-source

API

So senden Sie die Build-Anfrage mit curl in einem Standard-Worker-Pool:

  1. Erstellen Sie eine Datei mit dem Namen request.json und folgendem Inhalt:

    {
        "source": {
            "storageSource": {
                "bucket": "cloud-build-examples",
                "object": "node-docker-example.tar.gz"
            }
        },
        "steps": [{
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/$PROJECT_ID/my-image",
                "."
            ]
        }],
        "images": [
            "gcr.io/$PROJECT_ID/my-image"
        ]
    }
    

    In dieser Build-Anfrage ruft Cloud Build den docker-Build-Schritt mit den Argumenten build -t gcr.io/$PROJECT_ID/cb-demo-img . auf.

    Der vollständige Name des zu erstellenden Images ist gcr.io/$PROJECT_ID/cb-demo-img. Per Push in Container Registry übertragene Images verwenden das Registry-Namensformat.

    Die Codequelle für den Build ist das komprimierte tar-Archiv mit dem Namen node-docker-example.tar.gz. Die Datei wird in einem Cloud Storage-Bucket namens cloud-build-examples gespeichert.

  2. Führen Sie den folgenden Befehl aus, wobei project-id Ihre Cloud-Projekt-ID 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/global/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": "cloud-build-examples",
                        "object": "node-docker-example.tar.gz"
                    }
                },
                "createTime": "2017-05-12T18:58:07.341526Z",
                "steps": [
                {
                    "name": "gcr.io/cloud-builders/docker",
                    "args": [
                        "build",
                        "-t",
                        "gcr.io/$PROJECT-ID/cb-demo-img",
                        "."
                    ]
                }
                ],
                "timeout": "600s",
                "images": [
                    "gcr.io/$PROJECT-ID/cb-demo-img"
                ],
                "projectId": $PROJECT-ID,
                "logsBucket": "gs://...",
                "sourceProvenance": {
                    "resolvedStorageSource": {
                        "bucket": "cloud-build-examples",
                        "object": "node-docker-example.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.

So senden Sie die Build-Anfrage mit curl in einem benutzerdefinierten Worker-Pool:

  1. Erstellen Sie eine Datei mit dem Namen request.json und folgendem Inhalt:

    {
        "source": {
            "storageSource": {
                "bucket": "cloud-build-examples",
                "object": "node-docker-example.tar.gz"
            }
        },
        "steps": [{
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/$PROJECT_ID/my-image",
                "."
            ]
        }],
        "images": [
            "gcr.io/$PROJECT_ID/my-image"
        ]
    }
    

    In dieser Build-Anfrage ruft Cloud Build den docker-Build-Schritt mit den Argumenten build -t gcr.io/$PROJECT_ID/cb-demo-img . auf.

    Der vollständige Name des zu erstellenden Images ist gcr.io/$PROJECT_ID/cb-demo-img. Per Push in Container Registry übertragene Images verwenden das Registry-Namensformat.

    Die Codequelle für den Build ist das komprimierte tar-Archiv mit dem Namen node-docker-example.tar.gz. Die Datei wird in einem Cloud Storage-Bucket namens cloud-build-examples gespeichert.

  2. Führen Sie den folgenden Befehl aus, wobei project-id Ihre Cloud-Projekt-ID und REGION die Region ist, in der Sie Ihren benutzerdefinierten Worker-Pool erstellt haben:

    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/REGION/global/builds
    

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

Nächste Schritte