Membangun, menguji, dan menyimpan aplikasi Java dalam container

Halaman ini menjelaskan cara menggunakan Cloud Build untuk mem-build, menguji, dan menyimpan aplikasi berbasis Java dalam container, mengupload image container ke Artifact Registry, serta membuat asal-usul build.

Sebelum memulai

Menggunakan gambar maven atau gradle

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

maven

Untuk menjalankan tugas dalam 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 mengganti titik entri default gambar yang dirujuk di 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 sebagai 3.3-jdk-8 dan mencetak versi alat build:

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

gradle

Untuk menjalankan tugas dalam 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 mengganti titik entri default gambar yang dirujuk di 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 sebagai 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 utama project, buat file konfigurasi build bernama cloudbuild.yaml.

  2. Menjalankan pengujian: maven dan gradle menyediakan maven test dan gradle test, yang mendownload dependensi, mem-build aplikasi, dan menjalankan pengujian apa pun yang ditentukan dalam kode sumber Anda. Kolom args dari langkah build mengambil daftar argumen dan meneruskannya ke gambar yang direferensikan 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. Aplikasi paket: Untuk memaketkan aplikasi ke dalam file JAR untuk image maven, tentukan perintah package di kolom args. Perintah package mem-build file JAR di /workspace/target/.

    Untuk memaketkan aplikasi ke dalam file JAR untuk image gradle, tentukan perintah assemble di kolom args. Perintah assemble mem-build 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. Membuat container aplikasi: Cloud Build menyediakan image Docker bawaan yang dapat Anda gunakan untuk membuat container aplikasi Java. Untuk mengemas aplikasi Java, dalam file konfigurasi build:

    • 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 di-build, dan jalur ke artefak build Anda.
    • Tambahkan kolom images untuk mengirim image container yang telah di-build ke Artifact Registry.
    • Opsional: Tambahkan requestedVerifyOption: VERIFIED dalam kolom options di file konfigurasi build untuk mengaktifkan pembuatan provenance Supply chain Levels for Software Artifacts (SLSA).

    Langkah build berikut akan menempatkan aplikasi Anda ke dalam container, mengirim image container 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 keterangan:

    • location: lokasi regional atau multi-regional untuk repositori Anda.
    • project-id: ID project Google Cloud Anda.
    • repository: nama Artifact Registry repositori Anda.
    • image: nama image container Anda.
    • build-artifact: nama file JAR yang dibuat dari langkah build.
  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 keterangan:

    • 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 region 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 adalah beberapa contoh repositori yang dapat Anda gunakan untuk mem-build aplikasi Java, yang masing-masing berisi aplikasi contoh dan file konfigurasi build untuk mem-build dan menguji aplikasi tersebut:

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

Langkah selanjutnya