Auf dieser Seite wird erläutert, wie Sie mit Cloud Build Java-basierte Anwendungen erstellen, testen und in Containern verpacken, Ihre Container-Images in Artifact Registry hochladen und Build-Herkunft generieren.
Hinweis
- Machen Sie sich mit der Erstellung von Java-basierten Anwendungen vertraut.
- Halten Sie Ihr Java-Projekt bereit, einschließlich einer
Dockerfile. - Sie haben ein Docker-Repository in Artifact Registry oder erstellen ein neues Repository.
- Machen Sie sich damit vertraut, wie eine Cloud Build-Konfigurationsdatei geschrieben wird.
- Zum Ausführen der
gcloud-Befehle auf dieser Seite müssen Sie die Google Cloud CLI installieren.
maven- oder gradle-Image verwenden
Sie können Cloud Build so konfigurieren, dass Java-Anwendungen mit dem maven-Image oder dem gradle-Image aus Docker Hub erstellt werden.
maven
Wenn Sie Ihre Aufgaben im maven-Image ausführen möchten, fügen Sie Ihrer Build-Konfiguration einen Schritt mit den folgenden Feldern hinzu:
name: Legen Sie den Wert dieses Felds aufmavenodermaven:<tag>fest, wobei das Tag die Version darstellt. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig daslatest-Image.entrypoint: Wenn Sie dieses Feld festlegen, wird der Standardeinstiegspunkt des Image überschrieben, auf das innameverwiesen wird. Legen Sie den Wert dieses Felds aufmvnfest, ummvnals Einstiegspunkt für den Build-Schritt aufzurufen undmvn-Befehle auszuführen.args: Im Feldargseines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feldnameverwiesen wird.
Im folgenden Build-Schritt wird entrypoint für das maven-Image mit dem Tag 3.3-jdk-8 angegeben und die Version des Build-Tools ausgegeben:
steps:
- name: maven:3.3-jdk-8
entrypoint: mvn
args: ['--version']
gradle
Wenn Sie Ihre Aufgaben im gradle-Image ausführen möchten, fügen Sie Ihrer Build-Konfiguration einen Schritt mit den folgenden Feldern hinzu:
name: Legen Sie den Wert dieses Felds aufgradleodergradle:<tag>fest, wobei das Tag die Version darstellt. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig daslatest-Image.entrypoint: Wenn Sie dieses Feld festlegen, wird der Standardeinstiegspunkt des Image überschrieben, auf das innameverwiesen wird. Legen Sie den Wert dieses Felds aufgradlefest, umgradleals Einstiegspunkt für den Build-Schritt aufzurufen undgradle-Befehle auszuführen.args: Im Feldargseines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feldnameverwiesen wird.
Im folgenden Build-Schritt wird entrypoint für das gradle-Image mit dem Tag 5.6.2-jdk8 angegeben und die Version des Build-Tools ausgegeben:
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:
mavenundgradlestellenmaven testundgradle testbereit. Dadurch werden die Abhängigkeiten heruntergeladen, die Anwendungen werden erstellt und alle in Ihrem Quellcode angegebenen Tests werden ausgeführt. Im Feldargseines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feldnameverwiesen wird.Fügen Sie in Ihrer Build-Konfigurationsdatei dem Feld
argsden Werttesthinzu, umtestinnerhalb vonmavenundgradleaufzurufen: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
argsden Befehlpackagean, um Ihre Anwendung in einer JAR-Datei für dasmaven-Image zu verpacken. Mit dem Befehlpackagewird in/workspace/target/eine JAR-Datei erstellt.Geben Sie im Feld
argsden Befehlassembleein, um Ihre Anwendung in einer JAR-Datei für dasgradle-Image zu verpacken. Mit dem Befehlassemblewird inworkspace/build/libseine 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. So können Sie Ihre Java-Anwendung in der Build-Konfigurationsdatei containerisieren:
- Fügen Sie das Feld
namehinzu und geben Sie das vordefinierte Docker-Image untergcr.io/cloud-builders/dockeran. - Fügen Sie das Feld
argshinzu und geben Sie diebuild-Argumente an, einschließlich des Namens des zu erstellenden Container-Images und des Pfads zu Ihrem Build-Artefakt. - Fügen Sie das Feld
imageshinzu, um das erstellte Container-Image an Artifact Registry zu übergeben. Optional: Fügen Sie in Ihrer Build-Konfigurationsdatei
requestedVerifyOption: VERIFIEDin das Feldoptionsein, um die Generierung der Supply Chain Levels for Software Artifacts (SLSA)-Herkunft 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: die ID Ihres Projekts in Google Cloud .
- 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 das Feld
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-directoryWobei:
- 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: eine der unterstützten Build-Regionen.
Wenn Sie config-file-path und source-directory im Befehl
gcloud builds submitnicht angeben, geht Cloud Build davon aus, dass sich die Konfigurationsdatei und der Quellcode im aktuellen Arbeitsverzeichnis befinden.Nach Abschluss des Builds können Sie Repository-Details in Artifact Registry aufrufen.
Sie können auch Metadaten zur Build-Herkunft ansehen und die Herkunft validieren.
- 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
mvnzu erstellen und zu testen. - gradle-example: Eine Java-Anwendung und eine Beispiel-Build-Konfigurationsdatei, um die Anwendung mit
gradlezu 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