Blog

So erstellen Sie serverlose CI/CD-Pipelines in der Google Cloud

Mark van Holsteijn

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
4 Minuten

Wenn Sie sich die Google Cloud-Dienste wie Source Repository und Cloud Build ansehen, könnte man meinen, es sei ganz einfach, eine CI/CD-Build-Pipeline zu erstellen. Ich kann Ihnen sagen: Das ist es auch! In diesem Blog zeige ich Ihnen, wie Sie eine serverlose CI/CD-Pipeline für ein Docker-Image erstellen und dabei drei Ressourcen in Terraform verwenden.

Erstellen Sie eine serverlose CI/CD-Pipeline

Um eine serverlose CI/CD-Pipeline mit Google Cloud Platform zu erstellen, müssen Sie:

  1. Erstellen Sie ein Google Source Repository.
  2. Definieren Sie einen Auslöser, um ein Google Cloud Build auf Push zu starten.
  3. Fügen Sie eine Cloud Build-Definition zu Ihrem Source Repository hinzu.
  4. Veröffentlichen Sie Ihren Code. Es sind wirklich nur vier Schritte. Das ist alles!

Erstellen Sie ein Google Quellcode-Repository

Mit diesem Terraform-Snippet erstellen Sie ein Google-Quellcode-Repository:

resource google_sourcerepo_repository image {
  name       = "paas-monitor"
  depends_on = [google_project_service.sourcerepo]
}

Definieren Sie einen Auslöser

Der nächste Schritt besteht darin, einen Trigger zu erstellen, der einen Cloud-Build-Auftrag startet, wenn Sie auf den Master-Zweig pushen
So gehen Sie vor:

resource google_cloudbuild_trigger image {
  project = google_sourcerepo_repository.image.project

  trigger_template {
    branch_name = "master"
    repo_name   = google_sourcerepo_repository.image.name
  }

  filename = "cloudbuild.yaml"
  depends_on = [
    google_project_service.cloudbuild
  ]
}

Erstellen Sie eine Cloud Build Definition

Sie müssen auch einen Cloud Build-Auftrag erstellen, der Ihren Code bauen kann. So
Sie das: Fügen Sie eine Definitionsdatei namens cloudbuild.yaml hinzu. Diese Datei definiert die Schritte, die zur Durchführung des Builds erforderlich sind. Jeder Schritt wird von einem bestimmten Docker-Image ausgeführt, das in den ausgecheckten Arbeitsbereich eingehängt wird. Unser Build hat zwei Schritte: git fetch und make snapshot, da unser Build-Prozess
ein Makefile für die Erstellung und Freigabe von Docker-Images verwendet.

steps:
  - name: gcr.io/cloud-builders/git
    args: ["fetch", "--unshallow", "--tags"]
  - name: gcr.io/cloud-builders/docker
    entrypoint: make
    args:
      - REGISTRY_HOST=gcr.io
      - USERNAME=${PROJECT_ID}
      - snapshot

Ich war sehr froh zu erfahren, dass der Docker Builder sowohl git als auch make vorinstalliert hat.

Verwalten des Zugriffs auf das Quell-Repository

Sie können eine IAM-Richtlinie definieren, um den Zugriff auf das Quell-Repository zu verwalten. Hier ist ein weiteres
Terraform-Snippet, das Ihnen dabei helfen kann:

resource google_sourcerepo_repository_iam_policy image {
  project     = google_sourcerepo_repository.image.project
  repository  = google_sourcerepo_repository.image.name
  policy_data = data.google_iam_policy.image.policy_data
}

data google_iam_policy image {
  binding {
    role    = "roles/source.reader"
    members = []
  }

  binding {
    role    = "roles/source.writer"
    members = ["user:${var.email}"]
  }

  binding {
    role = "roles/source.admin"
    members = [
      "serviceAccount:${data.google_project.current.number}@cloudbuild.gserviceaccount.com",
    ]
  }
}

Hier sind zwei Richtlinienbindungen definiert: * Administratorrechte für das Cloud Build Service-Konto. * Schreibzugriff für den Benutzer mit dem angegebenen email.

Wie alles zusammenarbeitet

Um das Ganze in Aktion zu sehen, geben Sie die folgenden Befehle ein:

git clone https://github.com/binxio/blog-serverless-ci-cd-of-docker-images-with-google-cloud-platform.git
cd blog-serverless-ci-cd-of-docker-images-with-google-cloud-platform

und setzen Sie es ein:

export TF_VAR_email=$(gcloud config get-value account)
export TF_VAR_project=$(gcloud config get-value project)
terraform init
terraform apply -auto-approve

Dieses Skript erstellt: * Ein Quellcode-Repository mit dem Namen paas-monitor und Schreibrechten für Ihr E-Mail-Konto. * Einen Build-Trigger für das Code-Repository.

Installieren des Git Remote Helper

Bevor Sie an ein Google Source Repository pushen können, müssen Sie Ihre lokale Git-Installation so konfigurieren, dass
Ihre gcloud-Anmeldedaten zur Authentifizierung verwendet.

git config --global 
   credential.'https://source.developers.google.com'.helper 
   git-credential-gcloud.sh

Klonen des Quell-Repositorys

Um die Pipeline in Aktion zu sehen, klonen Sie mein paas-monitor-Repository.

git clone https://github.com/mvanholsteijn/paas-monitor.git
cd paas-monitor

In das Google Source Repository verschieben

Wenn die Anmeldeinformationen vorliegen und der Quellcode ausgecheckt ist, können Sie ihn nun in das Google Source Repository übertragen:

git remote add 
    gcp $(gcloud source repos 
          describe paas-monitor --format 'value(url)')
git push gcp --tags
git push gcp

Sie haben gerade den Build-Prozess mit einem Git-Push auf den Master-Zweig gestartet. Um den Build anzuzeigen, geben Sie gcloud builds list ein:

gcloud builds list
ID                                    CREATE_TIME                DURATION  SOURCE               IMAGES  STATUS
d3a313b8-ec30-442d-af0f-b9d5a10f788a  2019-12-07T17:54:24+00:00  53S       paas-monitor@master   -       SUCCESS

Um die Protokolle für diesen Build anzuzeigen, geben Sie Folgendes ein (ersetzen Sie die Build-ID durch Ihre)

gcloud builds log d3a313b8-ec30-442d-af0f-b9d5a10f788a

------------------------------------------------------------------------------------------------------------ REMOTE BUILD OUTPUT -------------------------------------------------------------------------------------------------------------
starting build "d3a313b8-ec30-442d-af0f-b9d5a10f788a"

FETCHSOURCE
Initialized empty Git repository in /workspace/.git/
From https://source.developers.google.com/p/speeltuin-mvanholsteijn/r/paas-monitor
 * branch            23f349221c561dced520606ea0a144c4f04dab95 -> FETCH_HEAD
HEAD is now at 23f3492 added cloudbuild.yaml
...

Alternativ können Sie auch die Cloud Build-Konsole aufrufen.

Wiederverwendung

Da die Pipeline mit nur zwei Ressourcen erstellt werden kann, empfehle ich Ihnen, diese direkt in Ihre Terraform-Vorlage einzufügen.

Fazit

Mit Terraform ist es sehr einfach, eine komplett serverlose CI/CD-Pipeline auf der Google Cloud Platform zu erstellen. Wenn Sie die Cloud Build-Spezifikation ändern, können Sie mit dieser Einrichtung alles bauen oder bereitstellen, was Sie wollen! Schauen Sie sich den [gesamten Quellcode für diesen Blog] an(blog-serverless-ci-cd-with-google-cloud-platform/pipeline.tf bei master)

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.