In diesem Dokument wird beschrieben, wie Sie die Cloud Deploy-Bereitstellungspipeline über ein CI-System (Continuous Integration) aufrufen.
Sie können Cloud Deploy ganz einfach in Ihr CI-System einbinden. Dazu fügen Sie einfach einen Aufruf in die gcloud
CLI von Cloud Deploy ein. Dieser Aufruf findet an Ihrer CI-Pipeline statt, an der Ihre Anwendung bereitgestellt werden kann.
Hinweise
Die Anleitung auf dieser Seite setzt voraus, dass Sie bereits die folgenden Bedingungen erfüllen:
Sie haben die entsprechenden APIs aktiviert.
Sie haben mindestens eine Bereitstellungspipeline definiert und registriert bei Cloud Deploy.
Sie haben mindestens ein Ziel definiert und Ihre Bereitstellungspipeline verweist auf dieses Ziel.
Cloud Deploy über Ihre CI-Pipeline aufrufen
Mit dem folgenden Befehl wird ein neuer Release erstellt und damit eine Bereitstellungspipelineinstanz aufgerufen:
gcloud deploy releases create RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION \
--annotations=[KEY=VALUE,...] \
--images=[IMAGE_LIST]
Wobei:
RELEASE_NAME
ist der Name, den Sie diesem Release zuweisen. Dieser Wert ist erforderlich.
Sie können dynamische Releasenamen angeben, indem Sie
'$DATE'
,'$TIME'
oder beides angeben. Wenn Sie diesen Befehl beispielsweise um 15:07 Uhr (UTC) aufrufen, wird'rel-$TIME'
inrel-1507
aufgelöst.'$DATE'
und'$TIME'
müssen in einfachen Anführungszeichen angegeben werden.PIPELINE_NAME
ist der Name Ihrer registrierten Zustellungspipeline. Dieser Wert ist erforderlich.
REGION
ist die Region, in der Sie diese Version erstellen. Die Region muss nicht mit der Region übereinstimmen, in der Sie Ihre Anwendung letztendlich bereitstellen.
[KEY=VALUE,...]
ist eine optionale Liste mit einer oder mehreren Annotationen, die in Form von Schlüssel/Wert-Paaren auf den Release angewendet werden sollen.
Sie können Annotationen verwenden, um die Releaseherkunft zu verfolgen, indem Sie beispielsweise eine Annotation wie
commitId=0065ca0
übergeben. Alle Anmerkungen zum Release werden zurückgegeben, wenn Sie den Release mitlist
oderget
versehen und mit dem Release in der Google Cloud Console anzeigen. So können Sie auch dort die Herkunft des Release sehen.[IMAGE_LIST]
ist eine durch Kommas getrennte Liste von Ersetzungen von Image-Name, Bild-Pfad und Pfad. Beispiel:
--images=image1=path/to/image1:v1@sha256:45db24,image2=path/to/image2:v1@sha256:55xy18
.Dieser Wert ist nicht erforderlich, wenn Sie
--build-artifacts
übergeben, das eine Skaffold-Build-Artefakt-Ausgabedatei identifiziert.Wenn Cloud Deploy das Manifest rendert, wird der Image-Name im nicht gerenderten Manifest durch die vollständige Image-Referenz im gerenderten Manifest ersetzt. Das heißt,
image1
in diesem Beispiel befindet sich im nicht gerenderten Manifest und wird im gerenderten Manifest durchpath/to/image1:v1@sha256:45db24
ersetzt.
Beispiel mit direktem Bildverweis
Mit dem folgenden Befehl wird ein neuer Release erstellt, dessen Image-Referenz direkt statt einer Build-Artefaktdatei weitergegeben wird:
gcloud deploy releases create my-release \
--delivery-pipeline=web-app \
--region=us-central1 \
--images=image1=path/to/image1:v1@sha256:45db24
In diesem Beispiel ist my-release
der Release-Name. Wenn Sie einen Releasenamen basierend auf Datum oder Uhrzeit generieren möchten, können Sie '$DATE'
oder 'TIME'
oder beides angeben. Die Zeit ist die UTC-Zeit der Maschine, auf der Sie den Befehl aufrufen. '$DATE'
und '$TIME'
müssen in einfachen Anführungszeichen stehen.
Beispiel:
gcloud deploy releases create rel-'$DATE'-'$TIME' \
--delivery-pipeline=web-app \
--region=us-central1 \
--images=image1=path/to/image1:v1@sha256:45db24
In diesem Beispiel generiert der Befehl einen Releasenamen mit dem Präfix rel-
sowie dem Datum und der Uhrzeit, z. B. rel-20220131-1507
.
Es ist auch üblich, den Git-SHA in einem Release-Namen zu verwenden. Beispiele für Cloud Build und Docker in diesem Dokument
Build-Artefakte im Vergleich zu Images
Mit dem Befehl gcloud deploy releases create
können Sie entweder eine Gruppe von Imagereferenzen oder eine Build-Artefaktdateireferenz weitergeben.
Verwenden Sie
--images=[NAME=TAG,...]
, um auf ein oder mehrere einzelne Container-Images zu verweisen.Dieser Wert ist eine Referenz auf eine Sammlung von einzelnen Image-Namen zu vollständigen Image-Pfadersetzungen. Beispiel:
gcloud deploy releases create my-release --images=image1=path/to/image1:v1@sha256:45db24
Verwenden Sie
--build-artifacts=
, um auf eine Ausgabedatei der Skaffold-Build-Artefakte zu verweisen.
Cloud Build-Beispiele, wobei eine Build-Artefaktdatei übergeben wird
Beispiel für Docker-Build
Die folgende YAML-Datei zeigt Cloud Build für einen Docker-Build-Image-Push und erstellt damit einen Cloud Deploy-Release.
In diesem Beispiel wird ein Image erstellt und in ein Artefakt-Repository übertragen. Außerdem wird ein Befehl zum Erstellen eines Release mit einem Releasenamen erstellt, der auf dem kurzen Commit-SHA basiert. Dieses Beispiel muss als Cloud Build-SCM-Trigger verwendet werden, da es auf der Variable $COMMIT_SHA
basiert.
In diesem Beispiel wird ein Image per Push an ein Docker-Tag gesendet, das dem Commit-Hash des Quell-Repositorys entspricht. Anschließend wird von den Argumenten des Release-Befehls auf denselben Commit-Hash wie bei einem Docker-Tag verwiesen.
steps:
# Build and tag using commit sha
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '.', '-t', 'REPO_LOCATION/$PROJECT_ID/IMAGE_NAME:${COMMIT_SHA}', '-f', 'Dockerfile']
# Push the container image
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'REPO_LOCATION/$PROJECT_ID/IMAGE_NAME:${COMMIT_SHA}']
# Create release in Google Cloud Deploy
- name: gcr.io/google.com/cloudsdktool/cloud-sdk
entrypoint: gcloud
args:
[
"deploy", "releases", "create", "rel-${SHORT_SHA}",
"--delivery-pipeline", "PIPELINE_NAME",
"--region", "us-central1",
"--annotations", "commitId=${REVISION_ID}",
"--images", "IMAGE_NAME=REPO_LOCATION/$PROJECT_ID/IMAGE_NAME:${COMMIT_SHA}"
]
Beachten Sie, dass der Image-Name am Ende dieses Beispiels "--images", "IMAGE_NAME=
im gerenderten Manifest durch die vollständige Image-Referenz ersetzt wird.
Beispiel für eine Cloud Build-Konfiguration mit Skaffold
Die folgende YAML-Datei ist der Inhalt einer Cloud Build-Build-Konfiguration. Sie enthält einen Aufruf an Cloud Deploy zum Erstellen eines Release mit einem auf dem Datum basierenden Releasenamen. Dieses Beispiel zeigt auch Skaffold, das für den Build verwendet wird.
steps:
- name: gcr.io/k8s-skaffold/skaffold
args:
- skaffold
- build
- '--interactive=false'
- '--file-output=/workspace/artifacts.json'
- name: gcr.io/google.com/cloudsdktool/cloud-sdk
entrypoint: gcloud
args:
[
"deploy", "releases", "create", "rel-${SHORT_SHA}",
"--delivery-pipeline", "PIPELINE_NAME",
"--region", "us-central1",
"--annotations", "commitId=${REVISION_ID}",
"--build-artifacts", "/workspace/artifacts.json"
]
GitHub Actions mit Cloud Deploy verbinden
Wenn Sie GitHub Actions für Continuous Integration oder andere Aktivitäten im Zusammenhang mit der Softwarebereitstellung verwenden, können Sie mit der GitHub-Aktion create-cloud-deploy-release
eine Verbindung zu Cloud Deploy für Continuous Delivery herstellen.
GitLab mit Cloud Deploy verbinden
Wenn Sie GitLab für die kontinuierliche Integration verwenden, können Sie mit der GitLab Cloud Deploy-Komponente create-cloud-deploy-release einen Cloud Deploy-Release erstellen.
Sie können auch die End-to-End-Anleitung für die Verwendung von GitLab mit Google Cloud durcharbeiten.
Weitere Informationen finden Sie in der Übersicht zu GitLab in Google Cloud.
Herkunft mithilfe von Annotationen verfolgen
Mit dem Flag --annotations=
können Sie ein oder mehrere beliebige Schlüssel/Wert-Paare auf den Release anwenden, der von diesem Befehl erstellt wird. Dieses Flag fügen Sie dem Befehl gcloud deploy releases create
hinzu.
Sie können beispielsweise die folgenden Schlüssel/Wert-Paare verwenden, um die Quelle des bereitzustellenden Images zu verfolgen.
Beispiel:
gcloud deploy releases create web-app-1029rel \
--delivery-pipeline=web-app \
--region=us-central1 \
--annotations=commitId=0065ca0,author=user@company.com \
--images=image1=path/to/image1:v1@sha256:45db24
Sie können auch eine Annotation erstellen, deren Wert beispielsweise die URL ist, die auf die Pull-Anfrage verweist. Weitere Informationen finden Sie unter Labels und Annotationen mit Cloud Deploy verwenden.