In diesem Thema wird beschrieben, wie sich Builds mithilfe von Cloud Build und Cloud Source Repositories automatisieren lassen.
Sie können Cloud Build so konfigurieren, dass automatisch jedes Mal ein neues Image erstellt wird, wenn ein Nutzer eine Änderung an Dateien überträgt, die in Cloud Source Repositories gespeichert sind. Ereignisse, die automatische Builds initiieren, werden Build-Trigger genannt. Diese Trigger können dazu beitragen, dass Ihre Container-Images auf dem neuesten Stand bleiben. Sie können auch zum Erstellen und Testen von Feature-Branches verwendet werden.
Build-Trigger können einen Build entweder auf Grundlage eines Dockerfiles oder einer Build-Konfigurationsdatei ausführen.
Verwendung eines Dockerfiles
Um ein Dockerfile für Ihre Build-Konfiguration zu verwenden, müssen Sie das Dockerfile-Verzeichnis festlegen und einen Namen für das resultierende Image vergeben. Weitere Informationen zum Erstellen von Dockerfiles finden Sie in der Docker-Dokumentation.
Nachdem Sie das Dockerfile und den Image-Namen angegeben haben, sehen Sie eine Vorschau des docker build
-Befehls, den Ihr Build ausführt, und eine Zusammenfassung der Triggerkonfiguration.
Build-Konfigurationsdatei verwenden
Zur Verwendung einer Build-Konfigurationsdatei für Ihre Build-Konfiguration müssen Sie den Speicherort einer Build-Konfigurationsdatei angeben.
Nachdem Sie den Speicherort angegeben haben, wird eine Zusammenfassung des Triggers angezeigt:
Hinweis
Aktivieren Sie die Cloud Build API.
Stellen Sie sicher, dass Sie Quellcode in Cloud Source Repositories haben.
Sorgen Sie entweder für ein Dockerfile oder eine Build-Konfigurationsdatei.
Wenn Sie ein anderes Dienstkonto als das Cloud Build-Standarddienstkonto verwenden, lesen Sie den Hilfeartikel Benutzerdefinierte Dienstkonten konfigurieren.
Weitere Informationen
Build-Trigger verwenden oberflächliche Klone eines Repositorys. Dies bedeutet, dass nur der einzelne Commit, der einen automatischen Build ausgelöst hat, im Arbeitsbereich ausgecheckt wird. Weitere Informationen und Hinweise zur weiteren Verwendung des Repository-Verlaufs finden Sie auf der Seite Oberflächliche Klone aufheben.
Wenn Sie einen anderen gehosteten Git-Anbieter wie GitHub oder Bitbucket verwenden und das Repository trotzdem in Cloud Source Repositories spiegeln müssen, benötigen Sie die Berechtigung
cloudbuilds.builds.create
für das Google Cloud-Projekt, an dem Sie arbeiten. Diese Berechtigung wird normalerweise über die Rollecloudbuild.builds.editor
erteilt.Wenn Sie zum ersten Mal einen Build-Trigger mit einem externen Repository erstellen, müssen Sie eine Autorisierung für dieses Repository einrichten. Weitere Informationen finden Sie unter Repository als Remote-Repository hinzufügen.
Nachdem Sie Ihr externes Repository eingerichtet haben, wird Ihr Repository von Cloud Source Repositories gespiegelt.
Informationen zu den Kontingenten und Limits für Cloud Build finden Sie in der Cloud Build-Dokumentation unter Kontingente und Limits.
Build-Trigger erstellen
Console
Öffnen Sie in der Google Cloud Console die Seite Trigger.
Wählen Sie oben auf der Seite im Drop-down-Menü zur Projektauswahl Ihr Projekt aus.
Klicken Sie auf Öffnen.
Klicken Sie auf Trigger erstellen.
Geben Sie die folgenden Triggereinstellungen ein:
Name: Geben Sie einen Namen für den Trigger ein.
Beschreibung (optional): Geben Sie eine Beschreibung für den Trigger ein.
Ereignis: Wählen Sie das Repository-Ereignis aus, das den Trigger auslösen soll.
Push zu Zweig: Legen Sie den Trigger so fest, dass ein Build für Commits zu einem bestimmten Zweig gestartet wird.
Neues Tag mit Push übertragen: Legen Sie den Trigger so fest, dass ein Build für Commits gestartet wird, die ein bestimmtes Tag enthalten.
Quelle: Wählen Sie das Repository und den entsprechenden Zweig oder das entsprechende Tag aus, um es auf Ereignisse zu prüfen.
- Repository: Wählen Sie aus der Liste der verfügbaren Repositories das gewünschte Repository aus. Informationen zum Verbinden eines neuen Repositories finden Sie unter Verbindung zu Quell-Repositories herstellen.
Wenn Ihr Build ausgeführt wird, wird der Inhalt Ihres Repositorys in
/workspace
kopiert, das Standardarbeitsverzeichnis von Cloud Build. Weitere Informationen zu Arbeitsverzeichnissen finden Sie auf der Seite Build-Konfiguration – Übersicht.- Zweig oder Tag: Geben Sie einen regulären Ausdruck mit dem abzugleichenden Zweig- oder Tag-Wert an. Schrägstriche (
/
) können nicht in Tags verwendet werden. Weitere Informationen zur zulässigen Syntax für reguläre Ausdrücke finden Sie unter RE2-Syntax.
Konfiguration: Wählen Sie die Build-Konfigurationsdatei aus, die sich in Ihrem Remote-Repository befindet, oder erstellen Sie eine Inline-Build-Konfigurationsdatei für den Build.
- Typ: Wählen Sie den Konfigurationstyp aus, der für Ihren Build verwendet werden soll.
- Cloud Build-Konfigurationsdatei (YAML oder JSON): Verwenden Sie eine Build-Konfigurationsdatei für Ihre Konfiguration.
- Dockerfile: Verwenden Sie für Ihre Konfiguration eine
Dockerfile
. - Buildpacks: Verwenden Sie Buildpacks für Ihre Konfiguration.
Speicherort: Geben Sie den Speicherort für Ihre Konfiguration an.
- Repository: Wenn sich die Konfigurationsdatei in Ihrem Remote-Repository befindet, geben Sie den Speicherort Ihrer Build-Konfigurationsdatei, das Verzeichnis der
Dockerfile
oder das Verzeichnis der Buildpacks an. Wenn Ihr Build-Konfigurationstyp eineDockerfile
oder ein Buildpack ist, müssen Sie einen Namen für das resultierende Image und optional ein Zeitlimit für den Build angeben. Wenn Sie den Image-Namen derDockerfile
oder des Buildpacks angegeben haben, sehen Sie eine Vorschau des Befehlsdocker build
oderpack
, den Ihr Build ausführen wird. - Buildpack-Umgebungsvariablen (Optional): Wenn Sie
buildpacks
als Konfigurationstyp ausgewählt haben, klicken Sie auf Pack-Umgebungsvariable hinzufügen, um Ihre Buildpack-Umgebungsvariablen und -werte anzugeben. Weitere Informationen zu Buildpack-Umgebungsvariablen finden Sie unter Umgebungsvariablen. Inline: Wenn Sie die Cloud Build-Konfigurationsdatei (YAML oder JSON) als Konfigurationsoption ausgewählt haben, können Sie die Build-Konfiguration inline angeben. Klicken Sie auf Editor öffnen, um Ihre Build-Konfigurationsdatei in der Google Cloud Console in der YAML- oder JSON-Syntax zu schreiben. Klicken Sie auf Fertig, um die Build-Konfiguration zu speichern.
- Repository: Wenn sich die Konfigurationsdatei in Ihrem Remote-Repository befindet, geben Sie den Speicherort Ihrer Build-Konfigurationsdatei, das Verzeichnis der
- Typ: Wählen Sie den Konfigurationstyp aus, der für Ihren Build verwendet werden soll.
Dienstkonto: Wählen Sie das Dienstkonto aus, das beim Aufrufen des Triggers verwendet werden soll. Wenn Sie kein Dienstkonto auswählen, wird das Cloud Build-Standarddienstkonto verwendet.
Klicken Sie auf Erstellen, um den Build-Trigger zu speichern.
gcloud
Führen Sie dazu diesen Befehl aus:
gcloud beta builds triggers create cloud-source-repositories \
--repo=REPO_NAME \
--branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
--build-config=BUILD_CONFIG_FILE \
--service-account=SERVICE_ACCOUNT \
--require-approval
Wobei:
- REPO_NAME ist der Name Ihres Repositorys.
- BRANCH_PATTERN ist der Zweigname in Ihrem Repository, für den der Build aufgerufen werden soll.
- TAG_PATTERN ist der Tag-Name in Ihrem Repository, in dem der Build ausgelöst werden soll.
- BUILD_CONFIG_FILE ist der Pfad zu Ihrer Build-Konfigurationsdatei.
- SERVICE_ACCOUNT (Vorschau) ist die mit Ihrem Dienstkonto verknüpfte E-Mail-Adresse. Wenn Sie dieses Flag nicht angeben, wird das Standard-Cloud Build-Dienstkonto verwendet.
- [Optional]
--require-approval
ist das Flag, das konfiguriert werden soll, um den Trigger so zu konfigurieren, dass er erforderlich ist.
Eine vollständige Liste der Flags finden Sie unter gcloud
-Referenz zur Erstellung von Triggern für Cloud Source Repositories.
Nachdem Sie den gcloud
-Befehl zum Erstellen eines Triggers mit Cloud Source Repositories ausgeführt haben, sollte eine Ausgabe ähnlich der folgenden angezeigt werden:
NAME CREATE_TIME STATUS
trigger-001 2019-10-30T20:45:03+00:00
Build-Trigger aufrufen
Wenn Sie Trigger in der Google Cloud Console aufrufen möchten, öffnen Sie die Cloud Build-Seite Trigger.
Zum Aufrufen von Triggern für ein bestimmtes Projekt in Cloud Source Repositories klicken Sie rechts oben auf Einstellungen
und dann auf Cloud Build-Trigger.Build-Trigger überspringen
Wenn Sie beispielsweise Dokumentations- oder Konfigurationsdateien aktualisieren, möchten Sie möglicherweise Ihren Quellcode ändern, aber keinen Build auslösen.
Wenn Sie in solchen Fällen [skip ci]
oder [ci skip]
in die Commit-Nachricht aufnehmen, wird kein Build ausgelöst.
Beispiel:
Author: A User <auser@example.com>
Date: Tue Apr 3 12:03:35 2018 -0700
Fixed customer affecting issue. [skip ci]
Wenn Sie später einen Build für diesen Commit ausführen möchten, verwenden Sie die Schaltfläche Trigger ausführen.
Nicht oberflächliche Klone
Zum Erstellen Ihrer Quelle in einem Git-Repository führt Cloud Source Repositories einen "oberflächlichen" Klon des Repositorys aus. Wenn Cloud Source Repositories einen "oberflächlichen" Klon ausführt, wird im Arbeitsbereich nur der einzelne Commit, der den Build ausgelöst hat, geprüft, und dann der Build aus dieser Quelle erstellt. Cloud Source Repositories überprüft keine anderen Branches oder Verläufe. Dies geschieht aus Effizienzgründen. Builds werden nicht verzögert, während Cloud Source Repositories das gesamte Repository und den gesamten Verlauf abruft, um einen Build von einem einzelnen Commit auszuführen.
Wenn Sie einen größeren Teil Ihres Repository-Verlaufs in den Build einbeziehen möchten, fügen Sie einen Build-Schritt zu Ihrer Build-Konfigurationsdatei hinzu, um den "oberflächlichen" Klon aufzuheben. Beispiel:
steps:
- name: gcr.io/cloud-builders/git
args: ['fetch', '--unshallow']
...
Weitere Informationen zu git fetch
finden Sie in der Git-Referenz.
Anleitungen zum Schreiben einer Build-Konfigurationsdatei finden Sie in der Übersicht zur Build-Konfiguration.