Membangun, menguji, dan menyimpan aplikasi Java dalam container

Halaman ini menjelaskan cara menggunakan Cloud Build untuk membangun, menguji, dan membuat container aplikasi berbasis Java, mengupload image container ke Artifact Registry, dan membuat provenans build.

Sebelum memulai

Menggunakan gambar maven atau gradle

Anda dapat mengonfigurasi Cloud Build untuk membangun aplikasi Java menggunakan image maven atau image gradle dari Docker Hub.

maven

Untuk menjalankan tugas di image maven, tambahkan langkah ke konfigurasi build dengan kolom berikut:

  • name: Tetapkan nilai kolom ini ke maven atau maven:<tag>, dengan tag mewakili versi. Jika Anda tidak menentukan tag image, Cloud Build akan menggunakan image latest secara default.
  • entrypoint: Menetapkan kolom ini akan menggantikan titik entri default gambar yang dirujuk dalam name. Tetapkan nilai kolom ini ke mvn untuk memanggil mvn sebagai titik entri langkah build dan menjalankan perintah mvn.
  • args: Kolom args dari langkah build mengambil daftar argumen dan meneruskannya ke image yang dirujuk oleh kolom name.

Langkah build berikut menentukan entrypoint untuk image maven yang diberi tag 3.3-jdk-8 dan mencetak versi alat build:

steps:
- name: maven:3.3-jdk-8
  entrypoint: mvn
  args: ['--version']

gradle

Untuk menjalankan tugas di image gradle, tambahkan langkah ke konfigurasi build dengan kolom berikut:

  • name: Tetapkan nilai kolom ini ke gradle atau gradle:<tag>, dengan tag mewakili versi. Jika Anda tidak menentukan tag image, Cloud Build akan menggunakan image latest secara default.
  • entrypoint: Menetapkan kolom ini akan menggantikan titik entri default gambar yang dirujuk dalam name. Tetapkan nilai kolom ini ke gradle untuk memanggil gradle sebagai titik entri langkah build dan menjalankan perintah gradle.
  • args: Kolom args dari langkah build mengambil daftar argumen dan meneruskannya ke image yang dirujuk oleh kolom name.

Langkah build berikut menentukan entrypoint untuk image gradle yang diberi tag 5.6.2-jdk8 dan mencetak versi alat build:

steps:
- name: gradle:5.6.2-jdk8
  entrypoint: gradle
  args: ['--version']

Mengonfigurasi build Java

  1. Di direktori root project Anda, buat file konfigurasi build bernama cloudbuild.yaml.

  2. Menjalankan pengujian: maven dan gradle menyediakan maven test dan gradle test, yang mendownload dependensi, membangun aplikasi, dan menjalankan pengujian apa pun yang ditentukan dalam kode sumber Anda. Kolom args dari langkah build mengambil daftar argumen dan meneruskannya ke image yang dirujuk oleh kolom name.

    Dalam file konfigurasi build, tambahkan test ke kolom args untuk memanggil test dalam maven dan gradle:

    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. Paket aplikasi: Untuk mengemas aplikasi Anda ke dalam file JAR untuk image maven, tentukan perintah package di kolom args. Perintah package akan membangun file JAR di /workspace/target/.

    Untuk mengemas aplikasi Anda ke dalam file JAR untuk image gradle, tentukan perintah assemble di kolom args. Perintah assemble membangun file JAR di workspace/build/libs.

    Langkah build berikut mengemas aplikasi Java Anda:

    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. Memasukkan aplikasi ke dalam container: Cloud Build menyediakan image Docker yang telah dibuat sebelumnya yang dapat Anda gunakan untuk memasukkan aplikasi Java ke dalam container. Untuk memasukkan aplikasi Java ke dalam container, di file konfigurasi build Anda:

    • Tambahkan kolom name dan tentukan image Docker bawaan di gcr.io/cloud-builders/docker.
    • Tambahkan kolom args dan tentukan argumen build, termasuk nama image container yang akan dibuat, dan jalur ke artefak build Anda.
    • Tambahkan kolom images untuk mengirim image container yang dibuat ke Artifact Registry.
    • Opsional: Tambahkan requestedVerifyOption: VERIFIED dalam kolom options di file konfigurasi build untuk mengaktifkan pembuatan asal-usul Supply chain Levels for Software Artifacts (SLSA).

    Langkah build berikut akan memasukkan aplikasi Anda ke dalam container, mengirim image container Anda ke Artifact Registry, dan membuat informasi asal build:

    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']
    

    Dengan:

    • location: lokasi regional atau multi-regional untuk repositori Anda.
    • project-id: ID Google Cloud project Anda.
    • repository: nama repositori Artifact Registry Anda.
    • image: nama image container Anda.
    • build-artifact: nama file JAR yang dibuat dari langkah build Anda.
  5. Mulai build: Setelah file konfigurasi build siap, mulai build dengan memasukkan perintah berikut di terminal:

    gcloud builds submit --region=REGION --config config-file-path source-directory
    

    Dengan:

    • config-file-path: jalur ke file konfigurasi build Anda. Dalam contoh ini, file konfigurasi build diberi nama cloudbuild.yaml.
    • source-directory: jalur atau URL ke kode sumber Anda.
    • REGION: salah satu wilayah build yang didukung.

    Jika Anda tidak menentukan config-file-path dan source-directory dalam perintah gcloud builds submit, Cloud Build mengasumsikan bahwa file konfigurasi dan kode sumber berada di direktori kerja saat ini.

    Setelah build selesai, Anda dapat melihat detail repositori di Artifact Registry.

    Anda juga dapat melihat metadata asal build dan memvalidasi asal.

Contoh kode

Berikut beberapa contoh repositori yang dapat Anda gunakan untuk membangun aplikasi Java, yang masing-masing berisi contoh aplikasi dan file konfigurasi build untuk membangun dan menguji aplikasi tersebut:

  • maven-example: Aplikasi Java dan contoh file konfigurasi build untuk membangun dan menguji aplikasi dengan mvn.
  • gradle-example: Aplikasi Java dan contoh file konfigurasi build untuk mem-build dan menguji aplikasi dengan gradle.

Langkah berikutnya