Membuat file konfigurasi build

Halaman ini menjelaskan cara membuat file konfigurasi build yang dapat Anda gunakan untuk memulai build di Cloud Build.

File konfigurasi build menentukan kolom yang diperlukan agar Cloud Build dapat melakukan tugas Anda. Anda memerlukan file konfigurasi build jika memulai build menggunakan alat command line gcloud atau pemicu build. Anda dapat menulis file konfigurasi build menggunakan sintaksis YAML atau JSON.

Sebelum memulai

Baca Ringkasan Konfigurasi Build untuk mempelajari kolom yang dapat Anda sertakan dalam file konfigurasi build.

Membuat konfigurasi build

Langkah-langkah berikut menjelaskan cara membuat file konfigurasi build dasar. Setiap kolom dalam file konfigurasi build menentukan bagian dari tugas yang ingin Anda lakukan. Satu-satunya kolom yang diperlukan dalam file konfigurasi build adalah kolom name untuk langkah. Semua kolom lainnya bersifat opsional.

YAML

  1. Buat file konfigurasi build. Di direktori utama project, buat file bernama cloudbuild.yaml. Ini adalah file konfigurasi Cloud Build Anda.

  2. Tambahkan kolom langkah. Bagian steps dalam file konfigurasi build berisi langkah-langkah build yang ingin Anda jalankan oleh Cloud Build.

    steps:
    
  3. Tambahkan langkah pertama. Di bagian steps:, tambahkan kolom name dan arahkan ke image container untuk menjalankan tugas Anda. Cloud Build dan komunitas developer-nya menyediakan beberapa image container dengan alat dan bahasa umum yang diinstal. Anda dapat menggunakan salah satu image ini (juga disebut Cloud Builder) atau image apa pun yang tersedia secara publik dalam langkah build. Untuk mengetahui informasi tentang berbagai jenis image container yang dapat Anda gunakan dalam langkah build, lihat Cloud Builder.

    Cuplikan berikut menunjukkan langkah build dengan builder docker gcr.io/cloud-builders/docker, yang merupakan image container yang menjalankan Docker.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. Tambahkan argumen langkah. Kolom args dari langkah mengambil daftar argumen dan meneruskannya ke builder yang direferensikan oleh kolom name. Jika builder di kolom name memiliki titik entri, args dalam daftar akan digunakan untuk mengakses titik entri tersebut. Jika builder di kolom name tidak memiliki titik entri, elemen pertama di args akan digunakan sebagai titik entri.

    Dalam contoh berikut:

    • build adalah titik entri ke cloud builder Docker.
    • -t adalah tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image adalah nama image yang akan di-build di Artifact Registry. Langkah build menggunakan penggantian default untuk project ID, sehingga nilai ini otomatis diganti pada waktu build.
    • . adalah lokasi kode sumber, yang menunjukkan bahwa kode sumber berada di direktori kerja saat ini.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image', '.']
      
  5. Menambahkan langkah lainnya. Anda dapat menambahkan langkah build dalam jumlah berapa pun ke file konfigurasi build dengan menyertakan kolom name tambahan dan mengarahkannya ke builder cloud.

    Cuplikan berikut menyertakan dua langkah lagi ke file konfigurasi build:

    • langkah build docker untuk memanggil perintah docker push guna mendorong build image di langkah sebelumnya ke Artifact Registry.
    • langkah build untuk perintah Google Cloud SDK dengan titik entri gcloud yang ditentukan, yang membuat instance Compute Engine dari image container di Artifact Registry. Kolom env disertakan untuk menentukan zona dan region Compute Engine.

       - name: 'gcr.io/cloud-builders/docker'
         args: ['push', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image']
       - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
         entrypoint: 'gcloud'
         args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image']
         env:
         - 'CLOUDSDK_COMPUTE_REGION=us-central1'
         - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
      
  6. Sertakan kolom konfigurasi build tambahan. Anda dapat mengonfigurasi build lebih lanjut dengan menyertakan kolom seperti machineType, tags, atau timeout. Untuk mengetahui daftar lengkap kolom yang dapat Anda sertakan dalam file konfigurasi build, lihat Ringkasan Konfigurasi Build.

    Dalam contoh berikut, waktu tunggu langkah build gcr.io/google.com/cloudsdktool/cloud-sdk habis setelah 240 detik.

      - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
        entrypoint: 'gcloud'
        timeout: 240s
        args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_REGION=us-central1'
        - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
    

    Lihat cuplikan berikut untuk contoh lengkap file konfigurasi build dasar:

    steps:
      # Docker Build
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage', 
               '.']
    
      # Docker Push
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage']
    
      # Entrypoint, timeout and environment variables
      - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
        entrypoint: 'gcloud'
        timeout: 240s
        args: ['compute', 'instances', 
               'create-with-container', 'my-vm-name',
               '--container-image', 
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage']
        env:
          - 'CLOUDSDK_COMPUTE_REGION=us-central1'
          - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'

    Dalam contoh ini, image container disimpan di Artifact Registry. Jika build Anda menghasilkan artefak non-penampung, Anda dapat menyimpannya di Cloud Storage menggunakan kolom artifacts. Untuk mengetahui petunjuk cara melakukannya, lihat Menyimpan Image dan Artefak.

JSON

  1. Buat file konfigurasi build. Di direktori utama project, buat file bernama cloudbuild.json. Ini adalah file konfigurasi Cloud Build Anda.

  2. Tambahkan kolom langkah. Bagian steps dalam file konfigurasi build berisi langkah-langkah build yang ingin Anda jalankan oleh Cloud Build.

    {
       "steps":
    }
    
  3. Tambahkan langkah pertama. Di bagian steps:, tambahkan kolom name dan arahkan ke image container untuk menjalankan tugas Anda. Cloud Build dan komunitas developer-nya menyediakan beberapa image container dengan alat dan bahasa umum yang diinstal. Anda dapat menggunakan salah satu image ini (juga disebut Cloud Builder) atau image apa pun yang tersedia secara publik dalam langkah build. Untuk mengetahui informasi tentang berbagai jenis image container yang dapat Anda gunakan dalam langkah build, lihat Cloud Builder.

    Cuplikan berikut menunjukkan langkah build dengan builder docker gcr.io/cloud-builders/docker, yang merupakan image container yang menjalankan Docker.

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker"
          }
       ]
    }
    
  4. Tambahkan argumen langkah. Kolom args dari langkah mengambil daftar argumen dan meneruskannya ke builder yang direferensikan oleh kolom name. Jika builder di kolom name memiliki titik entri, args dalam daftar akan digunakan untuk mengakses titik entri tersebut. Jika builder di kolom name tidak memiliki titik entri, elemen pertama di args akan digunakan sebagai titik entri.

    Dalam contoh berikut:

    • build adalah titik entri ke cloud builder Docker.
    • -t adalah tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image adalah nama image yang akan di-build di Artifact Registry. Langkah build menggunakan penggantian default untuk project ID, sehingga nilai ini otomatis diganti pada waktu build.
    • . adalah lokasi kode sumber, yang menunjukkan bahwa kode sumber berada di direktori kerja saat ini.

      {
         "steps": [
            {
               "name": "gcr.io/cloud-builders/docker",
               "args": [
                  "build",
                  "-t",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage",
                  "."
               ]
            }
         ]
      }
      
  5. Menambahkan langkah lainnya. Anda dapat menambahkan langkah build dalam jumlah berapa pun ke file konfigurasi build dengan menyertakan kolom name tambahan dan mengarahkannya ke builder cloud.

    Cuplikan berikut menyertakan dua langkah lagi ke file konfigurasi build:

    • langkah build docker untuk memanggil perintah docker push guna mendorong build image di langkah sebelumnya ke Artifact Registry.
    • langkah build untuk perintah Google Cloud SDK dengan titik entri gcloud yang ditentukan, yang membuat instance Compute Engine dari image container di Artifact Registry. Kolom env disertakan untuk menentukan zona dan region Compute Engine.

            {
               "name": "gcr.io/cloud-builders/docker",
               "args": [
                  "push",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
               ]
            },
            {
               "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
               "entrypoint": "gcloud",
               "args": [
                  "compute",
                  "instances",
                  "create-with-container",
                  "my-vm-name",
                  "--container-image",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
               ],
               "env": [
                  "CLOUDSDK_COMPUTE_REGION=us-central1",
                  "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
               ]
            }
      
  6. Sertakan kolom konfigurasi build tambahan. Anda dapat mengonfigurasi build lebih lanjut dengan menyertakan kolom seperti machineType, tags, atau timeout. Untuk mengetahui daftar lengkap kolom yang dapat Anda sertakan dalam file konfigurasi build, lihat Ringkasan Konfigurasi Build.

    Dalam contoh berikut, waktu tunggu langkah build gcr.io/google.com/cloudsdktool/cloud-sdk habis setelah 240 detik.

          {
             "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
             "entrypoint": "gcloud",
             "timeout": "240s",
             "args": [
                "compute",
                "instances",
                "create-with-container",
                "my-vm-name",
                "--container-image",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
             ],
             "env": [
                "CLOUDSDK_COMPUTE_REGION=us-central1",
                "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
             ]
          }
    

    Lihat cuplikan berikut untuk contoh lengkap file konfigurasi build dasar:

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
                "build",
                "-t",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage",
                "."
             ]
          },
          {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
                "push",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
             ]
          },
          {
             "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
             "entrypoint": "gcloud",
             "timeout": "240s",
             "args": [
                "compute",
                "instances",
                "create-with-container",
                "my-vm-name",
                "--container-image",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
             ],
             "env": [
                "CLOUDSDK_COMPUTE_REGION=us-central1",
                "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
             ]
          }
       ]
    }
    

    Dalam contoh ini, image container disimpan di Artifact Registry. Jika build Anda menghasilkan artefak non-penampung, Anda dapat menyimpannya di Cloud Storage menggunakan kolom artifacts. Untuk mengetahui petunjuk cara melakukannya, lihat Menyimpan Image dan Artefak.

Langkah selanjutnya