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 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 pada file konfigurasi build berisi langkah-langkah build yang Anda inginkan untuk dilakukan 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 developernya menyediakan beberapa image container yang dilengkapi dengan alat dan bahasa umum. Anda dapat menggunakan salah satu image tersebut (juga disebut Cloud Builder) atau image 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. Menambahkan argumen langkah. Kolom args dari suatu langkah mengambil daftar argumen dan meneruskannya ke builder yang dirujuk oleh kolom name. Jika builder di kolom name memiliki titik entri, args dalam daftar 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 builder cloud Docker.
    • -t adalah tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image adalah nama image yang akan dibangun di Artifact Registry. Langkah build menggunakan substitusi default untuk project ID, sehingga nilai ini otomatis diganti pada waktu build.
    • . adalah lokasi kode sumber, yang menunjukkan 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. Tambahkan langkah-langkah lainnya. Anda dapat menambahkan sejumlah langkah build ke file konfigurasi build dengan menyertakan kolom name tambahan dan mengarahkannya ke builder cloud.

    Cuplikan berikut menyertakan dua langkah lagi untuk file konfigurasi build:

    • langkah build Docker untuk memanggil perintah docker push guna mengirim build image pada 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. Menyertakan 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.

    Pada 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-container, Anda dapat menyimpannya di Cloud Storage menggunakan kolom artifacts. Untuk petunjuk cara melakukannya, lihat Menyimpan Gambar 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 pada file konfigurasi build berisi langkah-langkah build yang Anda inginkan untuk dilakukan 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 developernya menyediakan beberapa image container yang dilengkapi dengan alat dan bahasa umum. Anda dapat menggunakan salah satu image tersebut (juga disebut Cloud Builder) atau image 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. Menambahkan argumen langkah. Kolom args dari suatu langkah mengambil daftar argumen dan meneruskannya ke builder yang dirujuk oleh kolom name. Jika builder di kolom name memiliki titik entri, args dalam daftar 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 builder cloud Docker.
    • -t adalah tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image adalah nama image yang akan dibangun di Artifact Registry. Langkah build menggunakan substitusi default untuk project ID, sehingga nilai ini otomatis diganti pada waktu build.
    • . adalah lokasi kode sumber, yang menunjukkan 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. Tambahkan langkah-langkah lainnya. Anda dapat menambahkan sejumlah langkah build ke file konfigurasi build dengan menyertakan kolom name tambahan dan mengarahkannya ke builder cloud.

    Cuplikan berikut menyertakan dua langkah lagi untuk file konfigurasi build:

    • langkah build Docker untuk memanggil perintah docker push guna mengirim build image pada 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. Menyertakan 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.

    Pada 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-container, Anda dapat menyimpannya di Cloud Storage menggunakan kolom artifacts. Untuk petunjuk cara melakukannya, lihat Menyimpan Gambar dan Artefak.

Langkah selanjutnya