Auf dieser Seite wird erläutert, wie Sie mit Cloud Build Java-basierte Anwendungen erstellen, testen und containerisieren, Ihre Container-Images in die Artifact Registry hochladen und die Build-Herkunft generieren.
Hinweise
- Machen Sie sich mit der Erstellung von Java-basierten Anwendungen vertraut.
- Halte dein Java-Projekt bereit, einschließlich
Dockerfile
. - Sie müssen ein Docker-Repository in Artifact Registry haben oder ein neues Repository erstellen.
- Machen Sie sich damit vertraut, wie eine Cloud Build-Konfigurationsdatei geschrieben wird.
- Zum Ausführen der
gcloud
-Befehle auf dieser Seite installieren Sie den Google Cloud CLI
maven
- oder gradle
-Image verwenden
Sie können Cloud Build so konfigurieren, dass Java-Anwendungen mithilfe der
maven
Bild
oder das gradle
-Bild
aus Docker Hub.
maven
Zum Ausführen Ihrer Aufgaben im Image maven
fügen Sie Ihrer Build-Konfiguration einen Schritt mit den folgenden Feldern hinzu:
name
: Legen Sie den Wert dieses Felds aufmaven
odermaven:<tag>
fest, wobei der Wert -Tag für die Version steht. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig daslatest
-Image.entrypoint
: Durch Festlegen dieses Felds wird der Standardeinstiegspunkt des Bild, auf das inname
verwiesen wird Legen Sie den Wert dieses Felds aufmvn
fest, ummvn
als Einstiegspunkt für den Build-Schritt aufzurufen undmvn
-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.
Im folgenden Build-Schritt wird entrypoint
für das maven
-Image festgelegt, das mit 3.3-jdk-8
getaggt ist, und die Version des Build-Tools ausgegeben:
steps:
- name: maven:3.3-jdk-8
entrypoint: mvn
args: ['--version']
gradle
Zum Ausführen Ihrer Aufgaben im Image gradle
fügen Sie Ihrer Build-Konfiguration einen Schritt mit den folgenden Feldern hinzu:
name
: Legen Sie den Wert dieses Felds aufgradle
odergradle:<tag>
fest, wobei der Wert -Tag für die Version steht. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig daslatest
-Image.entrypoint
: Durch Festlegen dieses Felds wird der Standardeinstiegspunkt des Bild, auf das inname
verwiesen wird Legen Sie den Wert dieses Felds zum Aufrufen aufgradle
fest.gradle
als Einstiegspunkt für den Build-Schritt und führengradle
-Befehle aus.args
: Im Feldargs
eines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feldname
verwiesen wird.
Im folgenden Build-Schritt wird die entrypoint
für das gradle
-Image angegeben
5.6.2-jdk8
und gibt die Build-Tool-Version aus:
steps:
- name: gradle:5.6.2-jdk8
entrypoint: gradle
args: ['--version']
Java
-Builds konfigurieren
Erstellen Sie im Stammverzeichnis des Projekts eine Build-Konfigurationsdatei mit dem Namen
cloudbuild.yaml
.Tests ausführen:
maven
undgradle
stellenmaven test
undgradle test
bereit. Dadurch werden die Abhängigkeiten heruntergeladen, die Anwendungen werden erstellt und alle in Ihrem Quellcode angegebenen Tests werden ausgeführt. Im Feldargs
eines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feldname
verwiesen wird.Fügen Sie in Ihrer Build-Konfigurationsdatei dem Feld
args
den Werttest
hinzu, umtest
innerhalb vonmaven
undgradle
aufzurufen:maven
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['test']
gradle
steps: - name: gradle:5.6.2-jdk8 entrypoint: gradle args: ['test']
Anwendung verpacken: Geben Sie im Feld
args
den Befehlpackage
an, um Ihre Anwendung in einer JAR-Datei für dasmaven
-Image zu verpacken. Mit dem Befehlpackage
wird in/workspace/target/
eine JAR-Datei erstellt.Geben Sie im Feld
args
den Befehlassemble
ein, um Ihre Anwendung in einer JAR-Datei für dasgradle
-Image zu verpacken. Mit dem Befehlassemble
wird inworkspace/build/libs
eine JAR-Datei erstellt.Mit dem folgenden Build-Schritt wird Ihre Java-Anwendung verpackt:
maven
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['package','-Dmaven.test.skip=true']
gradle
steps: - name: gradle:5.6.2-jdk8 entrypoint: gradle args: ['assemble']
Anwendung containerisieren: Cloud Build bietet ein vordefiniertes Docker-Image mit dem Sie Ihre Java-Anwendung containerisieren können. Um Ihre Daten in Container zu verlagern, Java-Anwendung in Ihrer Build-Konfigurationsdatei:
- Fügen Sie ein
name
-Feld hinzu und geben Sie das vordefinierte Docker-Image untergcr.io/cloud-builders/docker
. - Fügen Sie ein
args
-Feld hinzu und geben Sie diebuild
-Argumente an, einschließlich des Namens der das zu erstellende Container-Image und den Pfad zu Ihrem Build-Artefakt. - Fügen Sie das Feld
images
hinzu, um das erstellte Container-Image per Push in Artifact Registry zu übertragen. Optional: Fügen Sie in Ihrer Build-Konfigurationsdatei im Feld
options
den WertrequestedVerifyOption: VERIFIED
hinzu, um die Generierung der Provenienz für Lieferkettenebenen für Software-Artefakte (SLSA) zu aktivieren.
Mit dem folgenden Build-Schritt wird Ihre Anwendung containerisiert, Ihr Container-Image per Push an Artifact Registry übertragen und Informationen zur Build-Herkunft generiert:
maven
steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'location-docker.pkg.dev/project-id/repository/image', '--build-arg=JAR_FILE=target/build-artifact', '.'] images: ['location-docker.pkg.dev/project-id/repository/image']
gradle
steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'location-docker.pkg.dev/project-id/repository/image', '--build-arg=JAR_FILE=build/libs/build-artifact', '.'] images: ['location-docker.pkg.dev/project-id/repository/image']
Wobei:
- location: der regionale oder multiregionale Speicherort für Ihr Repository.
- project-id ist die ID Ihres Google Cloud-Projekts.
- repository: der Name Ihres Artifact Registry-Repositorys.
- image ist der Name Ihres Container-Images.
- build-artifact ist der Name der JAR-Datei, die aus dem Build-Schritt erstellt wurde.
- Fügen Sie ein
Build starten: Wenn die Build-Konfigurationsdatei fertig erstellt ist, starten Sie den Build. Geben Sie dazu den folgenden Befehl in Ihr Terminal ein:
gcloud builds submit --region=REGION --config config-file-path source-directory
Wobei:
- config-file-path ist der Pfad zu Ihrer Build-Konfigurationsdatei. In diesem Beispiel hat die Build-Konfigurationsdatei den Namen
cloudbuild.yaml
. - source-directory ist der Pfad oder die URL zu Ihrem Quellcode.
REGION
ist eine der unterstützten Build-Regionen.
Wenn Sie config-file-path und source-directory im Befehl
gcloud builds submit
nicht angeben, geht Cloud Build davon aus, dass sich die Konfigurationsdatei und der Quellcode im aktuellen Arbeitsverzeichnis befinden.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.
- config-file-path ist der Pfad zu Ihrer Build-Konfigurationsdatei. In diesem Beispiel hat die Build-Konfigurationsdatei den Namen
Codebeispiele
Hier sind einige Beispiel-Repositories, die Sie zum Erstellen von Java-Anwendungen verwenden können. Jede enthält eine Beispielanwendung und eine Build-Konfigurationsdatei, damit Sie die Anwendung erstellen und testen können:
- maven-example: Eine Java-Anwendung und eine Beispiel-Build-Konfigurationsdatei, um die Anwendung mit
mvn
zu erstellen und zu testen. - gradle-example: Eine Java-Anwendung und eine Beispiel-Build-Konfigurationsdatei, um die Anwendung mit
gradle
zu erstellen und zu testen.
Nächste Schritte
- Build-Ergebnisse aufrufen
- Builds schützen
- Eigenständige Java-Anwendungen erstellen
- Mehr zum Bereitstellen einer Anwendung in Cloud Run
- Mehr zum Bereitstellen einer Anwendung in GKE
- Build-Fehler beheben