Auf dieser Seite wird erläutert, wie Sie mit Cloud Build Java-basierte Anwendungen erstellen, testen und containerisieren, Ihre Container-Images in Artifact Registry hochladen und Build-Herkunftsinformationen generieren.
Hinweise
- 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. Das Tag steht für die Version. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig daslatest-Image.entrypoint: Wenn Sie dieses Feld festlegen, wird der Standardeinstiegspunkt des Bilds ü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 festgelegt, das mit 3.3-jdk-8 getaggt ist. Außerdem wird 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. Das Tag steht für die Version. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig daslatest-Image.entrypoint: Wenn Sie dieses Feld festlegen, wird der Standardeinstiegspunkt des Bilds ü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 festgelegt, das mit 5.6.2-jdk8 getaggt ist, 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 stellt ein vordefiniertes Docker-Image bereit, 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 im Feld
optionsden WertrequestedVerifyOption: VERIFIEDhinzu, um die Generierung der Provenienz gemäß Supply Chain Levels for Software Artifacts (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: 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 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.Sobald der Build abgeschlossen ist, können Sie sich die Repository-Details in Artifact Registry ansehen.
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
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
- Weitere Informationen zum Schützen von Builds
- Informationen zum Erstellen eigenständiger Java-Anwendungen
- Mehr zum Bereitstellen einer Anwendung in Cloud Run
- Mehr zum Bereitstellen einer Anwendung in GKE
- Build-Fehler beheben