Membangun, menguji, dan menyimpan aplikasi Java dalam container

Halaman ini menjelaskan cara menggunakan Cloud Build untuk membangun, menguji, dan menyimpan aplikasi berbasis Java dalam container, mengupload image container ke Artifact Registry, membuat provenance 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.

Untuk menjalankan tugas di image maven atau gradle, tentukan URL image dan versi image yang diberi tag di kolom name file konfigurasi build Anda. Jika Anda tidak menentukan tag gambar, Cloud Build akan menggunakan image latest secara default. Cloud Build memulai image yang ditentukan dalam name menggunakan titik entri default gambar. Untuk mengganti titik entri default dan memanggil maven atau gradle sebagai titik entri, tentukan mvn atau gradle di kolom entrypoint.

File konfigurasi build berikut menentukan entrypoint untuk image maven atau gradle dan mencetak versi alat build:

pakar

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

gradle

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

Mengonfigurasi Java build

  1. Di direktori utama project, buat file konfigurasi build dengan nama cloudbuild.yaml.

  2. Jalankan 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 pada langkah build mengambil daftar argumen dan meneruskannya ke gambar yang dirujuk oleh kolom name.

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

    pakar

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

    gradle

     steps:
     - name: gradle:5.6.2-jdk8
       entrypoint: gradle
       args: ['test']
    
  3. Package application: Untuk memaketkan aplikasi Anda menjadi file JAR untuk image maven, tentukan perintah package di kolom args. Perintah package membuat file JAR di /workspace/target/.

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

    Langkah build berikut memaketkan aplikasi Java Anda:

    pakar

     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 dibangun sebelumnya yang dapat Anda gunakan untuk mem-build aplikasi Java dalam container. Untuk menyimpan aplikasi Java 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 di-build, dan jalur ke artefak build Anda.
    • Tambahkan kolom images untuk mengirim image container yang dibangun ke Artifact Registry dan membuat informasi provenance build. Jika Anda tidak menggunakan kolom images, Cloud Build tidak akan mencatat informasi provenance. Misalnya, jika Anda menggunakan langkah build docker push untuk mengupload gambar ke Artifact Registry, build Anda tidak akan memiliki informasi provenance terkait.

    Langkah build berikut memasukkan aplikasi Anda ke dalam container dan mengirim image container ke Artifact Registry, serta menghasilkan informasi provenance build.

    pakar

    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 Anda.
  5. Opsional: Mengaktifkan provenance untuk build regional

    Jika Anda menggunakan build regional, tambahkan kolom requestedVerifyOption di options pada file konfigurasi build Anda. Setel nilai ke VERIFIED untuk mengaktifkan pembuatan metadata provenance. Jika Anda tidak menambahkan requestedVerifyOption: VERIFIED, Cloud Build akan menghasilkan provenance untuk build global saja.

    options:
      requestedVerifyOption: VERIFIED
    
  6. Mulai build: Setelah file konfigurasi build siap, mulai build dengan memasukkan perintah berikut di terminal Anda:

    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 menganggap 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 provenance build dan memvalidasi provenance untuk membantu melindungi supply chain software Anda.

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 membangun dan menguji aplikasi dengan gradle.

Langkah selanjutnya