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 auf- mavenoder- maven:<tag>fest. Das Tag steht für die Version. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig das- latest-Image.
- entrypoint: Wenn Sie dieses Feld festlegen, wird der Standardeinstiegspunkt des Bilds überschrieben, auf das in- nameverwiesen wird. Legen Sie den Wert dieses Felds auf- mvnfest, um- mvnals Einstiegspunkt für den Build-Schritt aufzurufen und- mvn-Befehle auszuführen.
- args: Im Feld- argseines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feld- nameverwiesen 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 auf- gradleoder- gradle:<tag>fest. Das Tag steht für die Version. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig das- latest-Image.
- entrypoint: Wenn Sie dieses Feld festlegen, wird der Standardeinstiegspunkt des Bilds überschrieben, auf das in- nameverwiesen wird. Legen Sie den Wert dieses Felds auf- gradlefest, um- gradleals Einstiegspunkt für den Build-Schritt aufzurufen und- gradle-Befehle auszuführen.
- args: Im Feld- argseines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feld- nameverwiesen 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: - mavenund- gradlestellen- maven testund- gradle testbereit. Dadurch werden die Abhängigkeiten heruntergeladen, die Anwendungen werden erstellt und alle in Ihrem Quellcode angegebenen Tests werden ausgeführt. Im Feld- argseines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feld- nameverwiesen wird.- Fügen Sie in Ihrer Build-Konfigurationsdatei dem Feld - argsden Wert- testhinzu, um- testinnerhalb von- mavenund- gradleaufzurufen:- 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 Befehl- packagean, um Ihre Anwendung in einer JAR-Datei für das- maven-Image zu verpacken. Mit dem Befehl- packagewird in- /workspace/target/eine JAR-Datei erstellt.- Geben Sie im Feld - argsden Befehl- assembleein, um Ihre Anwendung in einer JAR-Datei für das- gradle-Image zu verpacken. Mit dem Befehl- assemblewird in- workspace/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 Wert- requestedVerifyOption: 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-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: 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