Auf dieser Seite wird beschrieben, wie Sie Cloud Build so konfigurieren, dass es Ihre Python-Anwendungen erstellt und testet, Ihre Artefakte in die Artifact Registry hochlädt, Informationen zur Provenienz generiert und Ihre Testprotokolle in Cloud Storage speichert.
Mit Cloud Build können Sie jedes öffentlich verfügbare Container-Image zur Ausführung Ihrer Aufgaben verwenden. Die Öffentlichkeit
python
-Image aus Docker Hub
python
- und pip
-Tools sind bereits vorinstalliert. Sie können Cloud Build zum Installieren von Abhängigkeiten sowie zum Erstellen und Ausführen von Einheitentests mit diesen Tools konfigurieren.
Hinweis
Die Anleitung auf dieser Seite setzt voraus, dass Sie mit Python vertraut sind. Außerdem gilt:
-
Enable the Cloud Build, Artifact Registry, and Cloud Storage APIs.
- Zum Ausführen der
gcloud
-Befehle auf dieser Seite installieren Sie die Google Cloud CLI. - Halten Sie Ihr Python-Projekt bereit.
- ein Python-Repository in Artifact Registry haben. Falls Sie noch keines haben, erstellen Sie ein neues Repository.
- Wenn Sie Testlogs in Cloud Storage speichern möchten, erstellen Sie einen Bucket in Cloud Storage.
Erforderliche IAM-Berechtigungen
Weisen Sie zum Speichern von Testlogs in Logging dem Build-Dienstkonto die Rolle Storage-Objekt-Ersteller (
roles/storage.objectCreator
) für den Cloud Storage-Bucket zu.Zum Speichern erstellter Images in Artifact Registry weisen Sie dem Build-Dienstkonto die Rolle Artifact Registry-Autor (
roles/artifactregistry.writer
) zu.
Eine Anleitung zum Zuweisen dieser Rollen finden Sie unter Rolle über die IAM-Seite zuweisen.
Python-Builds konfigurieren
Dieser Abschnitt enthält eine Beispiel-Build-Konfigurationsdatei für eine Python-Anwendung. Er enthält Build-Schritte, um Anforderungen zu installieren, Einheitentests hinzuzufügen und die Anwendung nach dem Bestehen der Tests zu erstellen und bereitzustellen.
Erstellen Sie im Stammverzeichnis des Projekts eine Build-Konfigurationsdatei mit dem Namen
cloudbuild.yaml
.Anforderungen für die Installation: Beim Image
python
von Docker Hub istpip
vorinstalliert. Fügen Sie einen Build-Schritt mit den folgenden Feldern hinzu, um Abhängigkeiten auspip
zu installieren:name
: Legen Sie den Wert dieses Felds aufpython
oderpython:<tag>
fest, um die Methode Python-Image von Docker Hub für diese Aufgabe. So rufen Sie eine Liste der verfügbaren Tags auf: Informationen zu anderen Python-Images finden Sie in der Docker Hub-Referenz für das Python-Image.entrypoint
: Wenn Sie dieses Feld festlegen, wird der Standardeinstiegspunkt des Image überschrieben, auf das inname
verwiesen wird. Legen Sie den Wert dieses Felds aufpip
fest, umpip
als Einstiegspunkt für den Build-Schritt aufzurufen undpip
-Befehle auszuführen.args
: Im Feldargs
eines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feldname
verwiesen wird. Übergeben Sie die Argumente, um den Befehlpip install
in diesem Feld auszuführen. Das Flag--user
im Befehlpip install
sorgt dafür, dass die nachfolgenden Build-Schritte auf die in diesem Build-Schritt installierten Module zugreifen können.
Mit dem folgenden Build-Schritt werden Argumente zum Installieren von Anforderungen hinzugefügt:
steps: - name: 'python' entrypoint: 'python' args: ['-m', 'pip', 'install', '--upgrade', 'pip'] - name: python entrypoint: python args: ['-m', 'pip', 'install', 'build', 'pytest', 'Flask', '--user']
Einheitentests hinzufügen: Wenn Sie in Ihrer Anwendung Einheitentests mit einem Test-Framework wie
pytest
definiert haben, können Sie Cloud Build so konfigurieren, dass die Tests ausgeführt werden: Fügen Sie folgende Felder in einem Build-Schritt hinzu:name
: Legen Sie den Wert dieses Felds aufpython
fest, um das Python-Image von Docker Hub für Ihre Aufgabe zu verwenden.entrypoint
: Legen Sie den Wert dieses Felds aufpython
fest, umpython
-Befehle auszuführen.args
: Fügen Sie die Argumente zum Ausführen des Befehlspython pytest
hinzu.
Mit dem folgenden Build-Schritt wird die Logausgabe von
pytest
in einer JUnit-XML-Datei gespeichert. Der Name dieser Datei wird mit$SHORT_SHA
erstellt, der Kurzversion der Commit-ID, die mit mit Ihrem Build. Bei einem nachfolgenden Build-Schritt werden die Logs in dieser Datei in Cloud Storage gespeichert.- name: 'python' entrypoint: 'python' args: ['-m', 'pytest', '--junitxml=${SHORT_SHA}_test_log.xml']
Build: Definieren Sie in der Build-Konfigurationsdatei den Builder und die
args
, um Ihre Anwendung zu erstellen:name
: Legen Sie den Wert dieses Felds aufpython
fest, um das Python-Image von Docker Hub für Ihre Aufgabe zu verwenden.entrypoint
: Legen Sie den Wert dieses Felds aufpython
fest, umpython
-Befehle auszuführen.args
: Fügen Sie die Argumente zum Ausführen des Builds hinzu.
Mit dem folgenden Build-Schritt wird der Build gestartet:
- name: 'python' entrypoint: 'python' args: ['-m', 'build']
In Artifact Registry hochladen:
Fügen Sie in Ihrer Konfigurationsdatei das Feld
pythonPackages
hinzu und geben Sie Ihr Python-Repository in Artifact Registry an:artifacts: pythonPackages: - repository: 'https://LOCATION-python.pkg.dev/PROJECT-ID/REPOSITORY' paths: ['dist/*']
Ersetzen Sie die folgenden Werte:
- PROJECT-ID ist die ID des Google Cloud-Projekts, das Ihr Artifact Registry-Repository enthält.
- REPOSITORY ist die ID des Repositorys.
- LOCATION ist der regionale oder multiregionale Speicherort für das Repository.
Optional: Generierung der Provenienz aktivieren
Cloud Build kann überprüfbare SLSA-Build (Supply Chain Levels for Software Artifacts) Herkunftsmetadaten, um Ihre Continuous-Integration-Pipeline zu sichern.
Um das Generieren von Herkunft zu ermöglichen, fügen Sie
requestedVerifyOption: VERIFIED
zum Abschnittoptions
Ihrer Konfigurationsdatei hinzu.Testlogs in Cloud Storage speichern: Sie können Cloud Build so konfigurieren, dass alle Testlogs in Cloud Storage gespeichert werden. Geben Sie dazu einen vorhandenen Bucket-Speicherort und einen Pfad zu den Testlogs an. Mit dem folgenden Build-Schritt werden die Testlogs, die Sie in der JUNIT-XML-Datei gespeichert haben, in einem Cloud Storage-Bucket gespeichert:
artifacts: objects: location: 'gs://${_BUCKET_NAME}/' paths: - '${SHORT_SHA}_test_log.xml'
Build starten: manuell oder Build-Trigger verwenden
Sobald der Build abgeschlossen ist, können Sie Repository-Details ansehen. in Artifact Registry.
Sie können auch Metadaten zur Build-Herkunft aufrufen und die Herkunft überprüfen.
Nächste Schritte
- Build-Ergebnisse aufrufen
- Builds schützen
- Weitere Informationen zum Erstellen und Containerisieren von Python-Anwendungen
- Weitere Informationen zur Verwendung privater Abhängigkeiten
- Blau/Grün-Bereitstellungen in Compute Engine ausführen
- Build-Fehler beheben