Java-Anwendungen erstellen, testen und containerisieren

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

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 auf maven oder maven:<tag> fest, wobei der Wert -Tag für die Version steht. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig das latest-Image.
  • entrypoint: Durch Festlegen dieses Felds wird der Standardeinstiegspunkt des Bild, auf das in name verwiesen wird Legen Sie den Wert dieses Felds auf mvn fest, um mvn als Einstiegspunkt für den Build-Schritt aufzurufen und mvn-Befehle auszuführen.
  • args: Im Feld args eines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feld name 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 auf gradle oder gradle:<tag> fest, wobei der Wert -Tag für die Version steht. Wenn Sie das Image-Tag nicht angeben, verwendet Cloud Build standardmäßig das latest-Image.
  • entrypoint: Durch Festlegen dieses Felds wird der Standardeinstiegspunkt des Bild, auf das in name verwiesen wird Legen Sie den Wert dieses Felds zum Aufrufen auf gradle fest. gradle als Einstiegspunkt für den Build-Schritt und führen gradle-Befehle aus.
  • args: Im Feld args eines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feld name 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

  1. Erstellen Sie im Stammverzeichnis des Projekts eine Build-Konfigurationsdatei mit dem Namen cloudbuild.yaml.

  2. Tests ausführen: maven und gradle stellen maven test und gradle test bereit. Dadurch werden die Abhängigkeiten heruntergeladen, die Anwendungen werden erstellt und alle in Ihrem Quellcode angegebenen Tests werden ausgeführt. Im Feld args eines Build-Schritts wird eine Liste von Argumenten abgerufen und an das Image übergeben, auf das im Feld name verwiesen wird.

    Fügen Sie in Ihrer Build-Konfigurationsdatei dem Feld args den Wert test hinzu, um test innerhalb von maven und gradle 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']
    
  3. Anwendung verpacken: Geben Sie im Feld args den Befehl package an, um Ihre Anwendung in einer JAR-Datei für das maven-Image zu verpacken. Mit dem Befehl package wird in /workspace/target/ eine JAR-Datei erstellt.

    Geben Sie im Feld args den Befehl assemble ein, um Ihre Anwendung in einer JAR-Datei für das gradle-Image zu verpacken. Mit dem Befehl assemble wird in workspace/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']
    
  4. 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 unter gcr.io/cloud-builders/docker.
    • Fügen Sie ein args-Feld hinzu und geben Sie die build-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 Wert requestedVerifyOption: 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.
  5. 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.

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