Skema file konfigurasi build

File konfigurasi build berisi petunjuk bagi Cloud Build untuk menjalankan tugas berdasarkan spesifikasi Anda. Misalnya, file konfigurasi build Anda dapat berisi petunjuk untuk mem-build, memaketkan, dan mengirim image Docker.

Halaman ini menjelaskan skema file konfigurasi Cloud Build. Untuk mengetahui petunjuk cara membuat dan menggunakan file konfigurasi build, lihat Membuat file konfigurasi build dasar.

Struktur file konfigurasi build

File konfigurasi build dimodelkan menggunakan resource Build Cloud Build API.

Anda dapat menulis file konfigurasi build menggunakan sintaksis YAML atau JSON. Jika Anda mengirimkan permintaan build menggunakan alat http pihak ketiga seperti curl, gunakan sintaksis JSON.

File konfigurasi build memiliki struktur berikut:

YAML

steps:
- name: string
  args: [string, string, ...]
  env: [string, string, ...]
  allowFailure: boolean
  allowExitCodes: [string (int64 format), string (int64 format), ...]
  dir: string
  id: string
  waitFor: [string, string, ...]
  entrypoint: string
  secretEnv: string
  volumes: object(Volume)
  timeout: string (Duration format)
  script: string
  automapSubstitutions: boolean
- name: string
  ...
- name: string
  ...
timeout: string (Duration format)
queueTtl: string (Duration format)
logsBucket: string
options:
 env: [string, string, ...]
 secretEnv: string
 volumes: object(Volume)
 sourceProvenanceHash: enum(HashType)
 machineType: enum(MachineType)
 diskSizeGb: string (int64 format)
 substitutionOption: enum(SubstitutionOption)
 dynamicSubstitutions: boolean
 automapSubstitutions: boolean
 logStreamingOption: enum(LogStreamingOption)
 logging: enum(LoggingMode)
 defaultLogsBucketBehavior: enum(DefaultLogsBucketBehavior)
 pool: object(PoolOption)
 requestedVerifyOption: enum(RequestedVerifyOption)
substitutions: map (key: string, value: string)
tags: [string, string, ...]
serviceAccount: string
secrets: object(Secret)
availableSecrets: object(Secrets)
artifacts: object(Artifacts)
  mavenArtifacts: [object(MavenArtifact), ...]
  pythonPackages: [object(PythonPackage), ...]
  npmPackages: [object(npmPackage), ...]
images:
- [string, string, ...]

JSON

{
    "steps": [
    {
        "name": "string",
        "args": [
            "string",
            "string",
            "..."
        ],
        "env": [
            "string",
            "string",
            "..."
        ],
        "allowFailure": "boolean",
        "allowExitCodes: [
            "string (int64 format)",
            "string (int64 format)",
            "..."
        ],
        "dir": "string",
        "id": "string",
        "waitFor": [
            "string",
            "string",
            "..."
        ],
        "entrypoint": "string",
        "secretEnv": "string",
        "volumes": "object(Volume)",
        "timeout": "string (Duration format)",
        "script" : "string",
        "automapSubstitutions" : "boolean"
    },
    {
        "name": "string"
        ...
    },
    {
        "name": "string"
        ...
    }
    ],
    "timeout": "string (Duration format)",
    "queueTtl": "string (Duration format)",
    "logsBucket": "string",
    "options": {
        "sourceProvenanceHash": "enum(HashType)",
        "machineType": "enum(MachineType)",
        "diskSizeGb": "string (int64 format)",
        "substitutionOption": "enum(SubstitutionOption)",
        "dynamicSubstitutions": "boolean",
        "automapSubstitutions": "boolean",
        "logStreamingOption": "enum(LogStreamingOption)",
        "logging": "enum(LoggingMode)"
        "defaultLogsBucketBehavior": "enum(DefaultLogsBucketBehavior)"
        "env": [
            "string",
            "string",
            "..."
        ],
        "secretEnv": "string",
        "volumes": "object(Volume)",
        "pool": "object(PoolOption)"
        "requestedVerifyOption": "enum(RequestedVerifyOption)"
    },
    "substitutions": "map (key: string, value: string)",
    "tags": [
        "string",
        "string",
        "..."
    ],
    "serviceAccount": "string",
    "secrets": "object(Secret)",
    "availableSecrets": "object(Secrets)",
    "artifacts": "object(Artifacts)",
      "mavenArtifacts": ["object(MavenArtifact)", ...],
      "pythonPackages": ["object(PythonPackage)", ...],
      "npmPackages": ["object(npmPackage)", ...],
    "images": [
        "string",
        "string",
        "..."
    ]
}

Setiap bagian file konfigurasi build menentukan bagian tugas yang ingin Anda jalankan oleh Cloud Build:

Langkah-langkah build

Langkah build menentukan tindakan yang ingin Anda lakukan oleh Cloud Build. Untuk setiap langkah build, Cloud Build mengeksekusi penampung Docker sebagai instance docker run. Langkah build analog dengan perintah dalam skrip dan memberi Anda fleksibilitas untuk mengeksekusi petunjuk arbitrer dalam build. Jika Anda dapat memaketkan alat build ke dalam container, Cloud Build dapat menjalankannya sebagai bagian dari build Anda. Secara default, Cloud Build mengeksekusi semua langkah build secara serial di mesin yang sama. Jika Anda memiliki langkah yang dapat berjalan secara serentak, gunakan opsi waitFor.

Anda dapat menyertakan hingga 300 langkah build dalam file konfigurasi.

Gunakan kolom steps dalam file konfigurasi build untuk menentukan langkah build. Berikut adalah cuplikan jenis konfigurasi yang dapat Anda tetapkan di kolom steps:

YAML

steps:
- name: 'gcr.io/cloud-builders/kubectl'
  args: ['set', 'image', 'deployment/mydepl', 'my-image=gcr.io/my-project/myimage']
  env:
  - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
  - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/my-project-id/myimage', '.']

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/kubectl",
        "args": [
            "set",
            "image"
            "deployment/mydepl"
            "my-image=gcr.io/my-project/myimage"
        ],
        "env": [
            "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
            "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
        ]
    },
    {
        "name": "gcr.io/cloud-builders/docker",
        "args": [
            "build",
            "-t",
            "gcr.io/my-project-id/myimage",
            "."
        ]
    }
    ]
}

name

Gunakan kolom name dari langkah build untuk menentukan cloud builder, yang merupakan image container yang menjalankan alat umum. Anda menggunakan builder dalam langkah build untuk menjalankan tugas.

Cuplikan berikut menunjukkan langkah-langkah build yang memanggil bazel, gcloud, dan docker builder:

YAML

steps:
- name: 'gcr.io/cloud-builders/bazel'
...

- name: 'gcr.io/cloud-builders/gcloud'
...

- name: 'gcr.io/cloud-builders/docker'
...

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/bazel"
        ...
    },
    {
        "name": "gcr.io/cloud-builders/gcloud"
        ...
    },
    {
        "name": "gcr.io/cloud-builders/docker"
        ...
    }
    ]
}

args

Kolom args dari langkah build mengambil daftar argumen dan meneruskannya ke builder yang dirujuk oleh kolom name. Argumen yang diteruskan ke builder diteruskan ke alat yang berjalan di builder, yang memungkinkan Anda memanggil perintah apa pun yang didukung oleh alat. Jika builder yang digunakan dalam langkah build memiliki titik entri, argumen akan digunakan sebagai argumen ke titik entri tersebut. Jika builder tidak menentukan titik entri, elemen pertama dalam argumen akan digunakan sebagai titik entri, dan sisanya akan digunakan sebagai argumen.

Anda dapat membuat hingga 100 argumen per langkah. Panjang argumen maksimum adalah 10.000 karakter.

Cuplikan berikut memanggil perintah docker build dan menginstal dependensi Maven:

YAML

steps:
- name: 'gcr.io/cloud-builders/mvn'
  args: ['install']
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/my-project-id/myimage', '.']

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/mvn",
        "args": [
            "install"
        ]
    },
    {
        "name": "gcr.io/cloud-builders/docker",
        "args": [
            "build",
            "-t",
            "gcr.io/my-project-id/myimage",
            "."
        ]
    }
    ]
}

env

Kolom env dari langkah build mengambil daftar variabel lingkungan yang akan digunakan saat menjalankan langkah. Variabelnya berbentuk KEY=VALUE.

Dalam konfigurasi build berikut, kolom env dari langkah build menetapkan zona Compute Engine dan cluster GKE sebelum menjalankan kubectl:

YAML

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
- name: 'gcr.io/cloud-builders/kubectl'
  args: ['set', 'image', 'deployment/myimage', 'frontend=gcr.io/myproject/myimage']
  env:
  - 'CLOUDSDK_COMPUTE_ZONE=us-east1-b'
  - 'CLOUDSDK_CONTAINER_CLUSTER=node-example-cluster'

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/docker",
        "args": [
            "build",
            "-t",
            "gcr.io/myproject/myimage",
            "."
        ]
    },
    {
        "name": "gcr.io/cloud-builders/kubectl",
        "args": [
            "set",
            "image",
            "deployment/myimage",
            "frontend=gcr.io/myproject/myimage"
        ],
        "env": [
            "CLOUDSDK_COMPUTE_ZONE=us-east1-b",
            "CLOUDSDK_CONTAINER_CLUSTER=node-example-cluster"
        ]
    }
    ]
}

dir

Gunakan kolom dir dalam langkah build untuk menetapkan direktori kerja yang akan digunakan saat menjalankan penampung langkah. Jika Anda menetapkan kolom dir di langkah build, direktori kerja akan ditetapkan ke /workspace/<dir>. Jika nilai ini adalah jalur relatif, nilai ini relatif terhadap direktori kerja build. Jika nilai ini absolut, nilai tersebut mungkin berada di luar direktori kerja build. Dalam hal ini, konten jalur mungkin tidak dipertahankan di seluruh eksekusi langkah build (kecuali jika volume untuk jalur tersebut ditentukan).

Cuplikan kode berikut menetapkan direktori kerja untuk langkah build sebagai /workspace/examples/hello_world:

YAML

steps:
- name: 'gcr.io/cloud-builders/go'
  args: ['install', '.']
  env: ['PROJECT_ROOT=hello']
  dir: 'examples/hello_world'

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/go",
        "args": [
            "install",
            "."
        ],
        "env": [
            "PROJECT_ROOT=hello"
        ],
        "dir": "examples/hello_world"
    }
    ]
}

timeout

Gunakan kolom timeout dalam langkah build untuk menetapkan batas waktu untuk mengeksekusi langkah. Jika Anda tidak menetapkan kolom ini, langkah tersebut tidak memiliki batas waktu dan akan diizinkan untuk berjalan hingga selesai atau waktu tunggu build itu sendiri berakhir. Kolom timeout dalam langkah build tidak boleh melebihi nilai timeout yang ditentukan untuk build. timeout harus ditentukan dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 'd'. Contoh: 3.5s

Dalam konfigurasi build berikut, waktu tunggu langkah ubuntu habis setelah 500 detik:

YAML

steps:
- name: 'ubuntu'
  args: ['sleep', '600']
  timeout: 500s
- name: 'ubuntu'
  args: ['echo', 'hello world, after 600s']

JSON

{
    "steps": [
    {
        "name": "ubuntu",
        "args": [
            "sleep",
            "600"
        ],
        "timeout": "500s"
    },
    {
        "name": "ubuntu",
        "args": [
            "echo",
            "hello world, after 600s"
        ]
    }
    ]
}

skrip

Gunakan kolom script dalam langkah build untuk menentukan skrip shell yang akan dijalankan dalam langkah tersebut. Jika menentukan script dalam langkah build, Anda tidak dapat menentukan args atau entrypoint dalam langkah yang sama. Untuk mengetahui petunjuk cara menggunakan kolom script, lihat Menjalankan skrip bash.

automapSubstitutions

Jika ditetapkan ke true, otomatis petakan semua penggantian dan sediakan sebagai variabel lingkungan dalam satu langkah. Jika ditetapkan ke false, abaikan penggantian untuk langkah tersebut. Untuk contoh, lihat Mengganti nilai variabel.

id

Gunakan kolom id untuk menetapkan ID unik untuk langkah build. id digunakan dengan kolom waitFor untuk mengonfigurasi urutan langkah build yang harus dijalankan. Untuk mengetahui petunjuk tentang cara menggunakan waitFor dan id, lihat Mengonfigurasi urutan langkah build.

waitFor

Gunakan kolom waitFor dalam langkah build untuk menentukan langkah mana yang harus dijalankan sebelum langkah build dijalankan. Jika tidak ada nilai yang diberikan untuk waitFor, langkah build akan menunggu semua langkah build sebelumnya dalam permintaan build berhasil diselesaikan sebelum dijalankan. Untuk mengetahui petunjuk tentang cara menggunakan waitFor dan id, lihat Mengonfigurasi urutan langkah build.

entrypoint

Gunakan entrypoint dalam langkah build untuk menentukan titik entri jika Anda tidak ingin menggunakan titik entri default builder. Jika Anda tidak menetapkan kolom ini, Cloud Build akan menggunakan titik entri builder. Cuplikan berikut menetapkan titik entri untuk langkah build npm:

YAML

steps:
- name: 'gcr.io/cloud-builders/npm'
  entrypoint: 'node'
  args: ['--version']

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/npm",
        "entrypoint": "node",
        "args": [
            "--version"
        ]
    }
    ]
}

secretEnv

Daftar variabel lingkungan yang dienkripsi menggunakan kunci kripto Cloud KMS. Nilai ini harus ditentukan dalam secret build. Untuk mengetahui informasi tentang penggunaan kolom ini, lihat Menggunakan variabel terenkripsi dalam permintaan build.

volumes

Volume adalah volume penampung Docker yang dipasang ke dalam langkah build untuk mempertahankan file di seluruh langkah build. Saat menjalankan langkah build, Cloud Build akan otomatis memasang volume workspace ke /workspace. Anda dapat menentukan volume tambahan yang akan dipasang ke penampung langkah build menggunakan kolom volumes untuk langkah Anda.

Misalnya, file konfigurasi build berikut menulis file ke dalam volume pada langkah pertama dan membacanya pada langkah kedua. Jika langkah-langkah ini tidak menentukan jalur /persistent_volume sebagai volume persisten, langkah pertama akan menulis file di jalur tersebut, lalu file tersebut akan dihapus sebelum langkah kedua dijalankan. Dengan menentukan volume dengan nama yang sama di kedua langkah, konten /persistent_volume di langkah pertama akan dipertahankan ke langkah kedua.

YAML

steps:
- name: 'ubuntu'
  volumes:
  - name: 'vol1'
    path: '/persistent_volume'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
        echo "Hello, world!" > /persistent_volume/file
- name: 'ubuntu'
  volumes:
  - name: 'vol1'
    path: '/persistent_volume'
  args: ['cat', '/persistent_volume/file']

JSON

  {
    "steps": [
      {
        "name": "ubuntu",
        "volumes": [
          {
            "name": "vol1",
            "path": "/persistent_volume"
          }
        ],
        "entrypoint": "bash",
        "args": [
          "-c",
          "echo \"Hello, world!\" > /persistent_volume/file\n"
        ]
      },
      {
        "name": "ubuntu",
        "volumes": [
          {
            "name": "vol1",
            "path": "/persistent_volume"
          }
        ],
        "args": [
          "cat",
          "/persistent_volume/file"
        ]
     }
    ]
  }

allowFailure

Pada langkah build, jika Anda menetapkan nilai kolom allowFailure ke true, dan langkah build gagal, build akan berhasil selama semua langkah build lainnya dalam build tersebut berhasil.

Jika semua langkah build dalam build memiliki allowFailure yang ditetapkan ke true dan semua langkah build gagal, status build masih Successful.

allowExitCodes lebih diprioritaskan daripada kolom ini.

Cuplikan kode berikut memungkinkan build berhasil saat langkah pertama gagal:

YAML

steps:
- name: 'ubuntu'
  args: ['-c', 'exit 1']
  allowFailure: true
steps:
- name: 'ubuntu'
  args: ['echo', 'Hello World']

JSON

{
  "steps": [
    {
        "name": "ubuntu",
        "args": [
            "-c",
            "exit -1"
        ],
        "allowFailure": true,
    },
    {
        "name": "ubuntu",
        "args": [
            "echo",
            "Hello World"
        ]
    }
  ]
}

allowExitCodes

Gunakan kolom allowExitCodes untuk menentukan bahwa kegagalan langkah build dapat diabaikan saat langkah tersebut menampilkan kode keluar tertentu.

Jika langkah build gagal dengan kode keluar yang cocok dengan nilai yang telah Anda berikan di allowExitCodes, Cloud Build akan mengizinkan langkah build ini gagal tanpa membuat seluruh build Anda gagal.

Jika 100% langkah build Anda gagal, tetapi setiap langkah keluar dengan kode yang telah Anda tentukan di kolom allowExitCodes, build masih berhasil.

Namun, jika langkah build gagal, dan menghasilkan kode keluar lain -- kode yang tidak cocok dengan nilai yang telah Anda tentukan di allowExitCodes -- build secara keseluruhan akan gagal.

Kode keluar yang relevan dengan build Anda bergantung pada software Anda. Misalnya, "1" adalah kode keluar umum di Linux. Anda juga dapat menentukan kode keluar Anda sendiri dalam skrip. Kolom allowExitCodes menerima angka hingga maksimum 255.

Kolom ini lebih diutamakan daripada allowFailure.

Cuplikan kode berikut memungkinkan build berhasil saat langkah pertama gagal dengan salah satu kode keluar yang disediakan:

YAML

steps:
- name: 'ubuntu'
  args: ['-c', 'exit 1']
  allowExitCodes: [1]
steps:
- name: 'ubuntu'
  args: ['echo', 'Hello World']

JSON

{
  "steps": [
    {
        "name": "ubuntu",
        "args": [
            "-c",
            "exit 1"
        ],
        "allowExitCodes": [1],
    },
    {
        "name": "ubuntu",
        "args": [
            "echo",
            "Hello World"
        ]
    }
  ]
}

timeout

Gunakan kolom timeout untuk build guna menentukan jumlah waktu yang harus diizinkan untuk menjalankan build, hingga tingkat perincian kedua. Jika waktu ini berlalu, pekerjaan pada build akan dihentikan dan status build akan menjadi TIMEOUT. Jika timeout tidak ditetapkan, timeout default 60 menit akan berlaku untuk build. Nilai maksimum yang dapat diterapkan ke timeout adalah 24 jam. timeout harus ditentukan dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 'd'. Contoh: 3.5s

Dalam cuplikan berikut, timeout disetel ke 660 detik untuk menghindari waktu tunggu build karena tidur:

YAML

steps:
- name: 'ubuntu'
  args: ['sleep', '600']
timeout: 660s

JSON

{
    "steps": [
    {
        "name": "ubuntu",
        "args": [
            "sleep",
            "600"
        ]
    }
    ],
    "timeout": "660s"
}

queueTtl

Gunakan kolom queueTtl untuk menentukan jumlah waktu build dapat diantrekan. Jika build berada dalam antrean lebih lama dari nilai yang ditetapkan di queueTtl, build akan berakhir masa berlakunya dan status build ditetapkan ke EXPIRED. Jika tidak ada nilai yang diberikan, Cloud Build akan menggunakan nilai default 3600s (1 jam). queueTtl mulai berdetak dari createTime. queueTtl harus ditentukan dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 'd', misalnya, 3.5s.

Dalam cuplikan berikut, timeout disetel ke 20s dan queueTtl disetel ke 10s. queueTtl mulai berdetak pada createTime, yaitu waktu build diminta, dan timeout mulai berdetak pada startTime, yaitu waktu build dimulai. Oleh karena itu, queueTtl akan berakhir pada createTime + 10s kecuali jika build dimulai pada saat itu.

YAML

steps:
- name: 'ubuntu'
  args: ['sleep', '5']
timeout: 20s
queueTtl: 10s

JSON

{
    "steps": [
    {
        "name": "ubuntu",
        "args": [
            "sleep",
            "5"
        ]
    }
    ],
    "timeout": "20s",
    "queueTtl": "10s"
}

logsBucket

Tetapkan kolom logsBucket untuk build guna menentukan bucket Cloud Storage tempat log harus ditulis. Jika Anda tidak menetapkan kolom ini, Cloud Build akan menggunakan bucket default untuk menyimpan log build Anda.

Cuplikan berikut menetapkan bucket log untuk menyimpan log build:

YAML

steps:
- name: 'gcr.io/cloud-builders/go'
  args: ['install', '.']
logsBucket: 'gs://mybucket'

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/go",
        "args": [
            "install",
            "."
        ]
    }
    ],
    "logsBucket": "gs://mybucket"
}

options

Gunakan kolom options untuk menentukan argumen opsional berikut untuk build Anda:

env: Daftar definisi variabel lingkungan global yang akan ada untuk semua langkah build dalam build ini. Jika variabel ditentukan secara global dan dalam langkah build, variabel akan menggunakan nilai langkah build. Elemennya berbentuk KEY=VALUE untuk variabel lingkungan KEY yang diberi nilai VALUE.

secretEnv: Daftar variabel lingkungan global, yang dienkripsi menggunakan kunci kripto Cloud Key Management Service, yang akan tersedia untuk semua langkah build dalam build ini. Nilai ini harus ditentukan dalam Secret build.

volumes: Daftar volume yang akan dipasang secara global untuk SEMUA langkah build. Setiap volume dibuat sebagai volume kosong sebelum memulai proses build. Setelah build selesai, volume dan isinya akan dihapus. Nama dan jalur volume global tidak boleh bertentangan dengan volume yang menentukan langkah build. Menggunakan volume global dalam build dengan hanya satu langkah tidak valid karena menandakan permintaan build dengan konfigurasi yang salah.

sourceProvenanceHash: Tetapkan opsi sourceProvenanceHash untuk menentukan algoritma hash untuk asal sumber. Cuplikan berikut menentukan bahwa algoritma hash adalah SHA256:

YAML

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
    sourceProvenanceHash: ['SHA256']

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/docker",
        "args": [
            "build",
            "-t",
            "gcr.io/myproject/myimage",
            "."
        ]
    }
    ],
    "options": {
        "sourceProvenanceHash": ["SHA256"]
    }
}

machineType: Cloud Build menyediakan empat jenis virtual machine dengan CPU tinggi untuk menjalankan build Anda: dua jenis mesin dengan 8 CPU dan dua jenis mesin dengan 32 CPU. Cloud Build juga menyediakan dua jenis virtual machine tambahan dengan 1 CPU dan 2 CPU untuk menjalankan build Anda. Jenis mesin default adalah e2-standard-2 dengan 2 CPU. Meminta virtual machine dengan CPU tinggi dapat meningkatkan waktu startup build Anda. Tambahkan opsi machineType untuk meminta virtual machine dengan CPU yang lebih tinggi:

YAML

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
 machineType: 'E2_HIGHCPU_8'

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/docker",
        "args": [
            "build",
            "-t",
            "gcr.io/myproject/myimage",
            "."
        ]
    },
    ],
    "options": {
        "machineType": "E2_HIGHCPU_8"
    }
}

Untuk informasi selengkapnya tentang penggunaan opsi machineType, lihat Mempercepat build.

diskSizeGb: Gunakan opsi diskSizeGb untuk meminta ukuran disk kustom untuk build Anda. Ukuran maksimum yang dapat Anda minta adalah 4.000 GB.

Cuplikan berikut meminta ukuran disk sebesar 200 GB:

YAML

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
 diskSizeGb: '200'

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/docker",
        "args": [
            "build",
            "-t",
            "gcr.io/myproject/myimage",
            "."
        ]
    }
    ],
    "options": {
        "diskSizeGb": '200'
    }
}

logStreamingOption: Gunakan opsi ini untuk menentukan apakah Anda ingin melakukan streaming log build ke Cloud Storage. Secara default, Cloud Build mengumpulkan log build saat penyelesaian build; opsi ini menentukan apakah Anda ingin melakukan streaming log build secara real time melalui proses build. Cuplikan berikut menentukan bahwa log build di-streaming ke Cloud Storage:

YAML

steps:
- name: 'gcr.io/cloud-builders/go'
  args: ['install', '.']
options:
 logStreamingOption: STREAM_ON

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/go",
        "args": [
            "install",
            "."
        ]
    }
    ],
    "options": {
        "logStreamingOption": "STREAM_ON"
    }
}

logging: Gunakan opsi ini untuk menentukan apakah Anda ingin menyimpan log di Cloud Logging atau Cloud Storage. Jika Anda tidak menetapkan opsi ini, Cloud Build akan menyimpan log di Cloud Logging dan Cloud Storage. Anda dapat menetapkan opsi logging ke GCS_ONLY untuk menyimpan log hanya di Cloud Storage. Cuplikan berikut menentukan bahwa log disimpan di Cloud Storage:

YAML

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
 logging: GCS_ONLY

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/docker",
        "args": [
            "build",
            "-t",
            "gcr.io/myproject/myimage",
            "."
        ]
    }
    ],
    "options": {
        "logging": "GCS_ONLY"
    }
}

defaultLogsBucketBehavior: Opsi defaultLogsBucketBehavior memungkinkan Anda mengonfigurasi Cloud Build untuk membuat bucket log default dalam project Anda sendiri di region yang sama dengan build Anda. Untuk mengetahui informasi selengkapnya, lihat Menyimpan log build di bucket milik pengguna dan yang diregionalisasi.

Konfigurasi build berikut menetapkan kolom defaultLogsBucketBehavior ke nilai REGIONAL_USER_OWNED_BUCKET:

YAML

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
options:
  defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET

JSON

{
  "steps": [
    {
      "name": "gcr.io/cloud-builders/docker",
      "args": [
        "build",
        "-t",
        "us-central1-docker.pkg.dev/myproject/myrepo/myimage",
        "."
      ]
    }
    ],
    "options": {
      "defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET"
    }
}

dynamicSubstitutions: Gunakan opsi ini untuk mengaktifkan atau menonaktifkan ekspansi parameter bash secara eksplisit dalam penggantian. Jika build Anda dipanggil oleh pemicu, kolom dynamicSubstitutions selalu ditetapkan ke benar dan tidak perlu ditentukan dalam file konfigurasi build Anda. Jika build dipanggil secara manual, Anda harus menetapkan kolom dynamicSubstitutions ke true agar perluasan parameter bash dapat ditafsirkan saat menjalankan build.

automapSubstitutions: Memetakan semua penggantian ke variabel lingkungan secara otomatis yang akan tersedia di seluruh build. Untuk contoh, lihat Mengganti nilai variabel.

substitutionOption: Anda akan menetapkan opsi ini bersama dengan kolom substitutions di bawah untuk menentukan perilaku saat ada error dalam pemeriksaan penggantian.

pool: Tetapkan nilai kolom ini ke nama resource kumpulan pribadi untuk menjalankan build. Untuk petunjuk tentang cara menjalankan build di kumpulan pribadi, lihat Menjalankan build di kumpulan pribadi.

requestedVerifyOption: Tetapkan nilai requestedVerifyOption ke VERIFIED untuk mengaktifkan dan memverifikasi pembuatan pernyataan dan metadata asal untuk build Anda. Setelah ditetapkan, build Anda hanya akan ditandai SUCCESS jika pengesahan dan asal dibuat.

substitutions

Gunakan penggantian dalam file konfigurasi build untuk mengganti variabel tertentu pada waktu build. Substitusi berguna untuk variabel yang nilainya tidak diketahui hingga waktu build, atau untuk menggunakan kembali permintaan build yang sudah ada dengan nilai variabel yang berbeda. Secara default, build menampilkan error jika ada variabel penggantian yang hilang atau penggantian yang hilang. Namun, Anda dapat menggunakan opsi ALLOW_LOOSE untuk melewati pemeriksaan ini.

Cuplikan berikut menggunakan penggantian untuk mencetak "hello world". Opsi penggantian ALLOW_LOOSE ditetapkan, yang berarti build tidak akan menampilkan error jika ada variabel penggantian yang hilang atau penggantian yang hilang.

YAML

steps:
- name: 'ubuntu'
  args: ['echo', 'hello ${_SUB_VALUE}']
substitutions:
    _SUB_VALUE: world
options:
    substitution_option: 'ALLOW_LOOSE'

JSON

{
    "steps": [
    {
        "name": "ubuntu",
        "args": [
            "echo",
            "hello ${_SUB_VALUE}"
        ]
    }
    ],
    "substitutions": {
        "_SUB_VALUE": "world"
},
    "options": {
        "substitution_option": "ALLOW_LOOSE"
    }
}

Untuk petunjuk tambahan tentang penggunaan substitutions, lihat Mengganti nilai variabel.

tags

Gunakan kolom tags untuk mengatur build ke dalam grup dan memfilter build. Konfigurasi berikut menetapkan dua tag bernama mytag1 dan mytag2:

YAML

steps:
- name: 'gcr.io/cloud-builders/docker'
  ...
- name: 'ubuntu'
  ...
tags: ['mytag1', 'mytag2']

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/docker"
    },
    {
        "name": "ubuntu"
    }
    ],
    "tags": [
        "mytag1",
        "mytag2"
    ]
}

availableSecrets

Gunakan kolom ini untuk menggunakan secret dari Secret Manager dengan Cloud Build. Untuk mengetahui informasi selengkapnya, lihat Menggunakan secret.

secrets

Secret menyambungkan kumpulan variabel lingkungan secret yang berisi nilai terenkripsi dengan kunci Cloud KMS yang akan digunakan untuk mendekripsi nilai tersebut.

serviceAccount

Gunakan kolom ini untuk menentukan akun layanan IAM yang akan digunakan pada waktu build. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi akun layanan yang ditentukan pengguna.

images

Kolom images dalam file konfigurasi build menentukan satu atau beberapa image Docker Linux yang akan di-push oleh Cloud Build ke Artifact Registry atau Container Registry (Tidak digunakan lagi). Anda mungkin memiliki build yang melakukan tugas tanpa membuat image Docker Linux, tetapi jika Anda mem-build image dan tidak mengirimkannya ke registry, image akan dihapus setelah build selesai. Jika image yang ditentukan tidak dihasilkan selama build, build akan gagal. Untuk mengetahui informasi selengkapnya tentang cara menyimpan image, lihat Menyimpan artefak di Artifact Registry.

Konfigurasi build berikut menetapkan kolom images untuk menyimpan image yang di-build:

YAML

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
images: ['gcr.io/myproject/myimage']

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/docker",
        "args": [
            "build",
            "-t",
            "gcr.io/myproject/myimage",
            "."
        ]
    }
    ],
    "images": [
        "gcr.io/myproject/myimage"
    ]
}

artifacts

Kolom artifacts dalam file konfigurasi build menentukan satu atau beberapa artefak non-penampung yang akan disimpan di Cloud Storage. Untuk informasi selengkapnya tentang cara menyimpan artefak non-penampung, lihat Menyimpan artefak build di Cloud Storage.

Konfigurasi build berikut menetapkan kolom artifacts untuk menyimpan paket Go yang di-build ke gs://mybucket/:

YAML

steps:
- name: 'gcr.io/cloud-builders/go'
  args: ['build', 'my-package']
artifacts:
  objects:
    location: 'gs://mybucket/'
    paths: ['my-package']

JSON

{
    "steps": [
    {
        "name": "gcr.io/cloud-builders/go",
        "args": [
            "build",
            "my-package"
        ]
    }
    ],
    "artifacts": {
      "objects": {
        "location": "gs://mybucket/",
        "paths": [
            "my-package"
        ]
      }
    }
}

mavenArtifacts

Kolom mavenArtifacts memungkinkan Anda mengupload artefak Java non-container ke repositori Maven di Artifact Registry. Untuk informasi selengkapnya, lihat Mem-build dan menguji aplikasi Java.

Konfigurasi build berikut menetapkan kolom mavenArtifacts untuk mengupload file yang dipaketkan my-app-1.0-SNAPSHOT.jar ke repositori Artifact Registry https://us-central1-maven.pkg.dev/my-project-id/my-java-repo:

YAML

artifacts:
  mavenArtifacts:
    - repository: 'https://us-central1-maven.pkg.dev/my-project-id/my-java-repo'
      path: '/workspace/my-app/target/my-app-1.0-SNAPSHOT.jar'
      artifactId: 'my-app-1'
      groupId: 'com.mycompany.app'
      version: '1.0.0'

JSON

{
  "artifacts": {
    "mavenArtifacts": [
      {
        "repository": "https://us-central1-maven.pkg.dev/my-project-id/my-java-repo",
        "path": "/workspace/my-app/target/my-app-1.0-SNAPSHOT.jar",
        "artifactId": "my-app-1",
        "groupId": "com.mycompany.app",
        "version": "1.0.0"
      }
    ]
  }
}

pythonPackages

Kolom pythonPackages memungkinkan Anda mengupload paket Python ke Artifact Registry. Untuk informasi selengkapnya, lihat Mem-build dan menguji aplikasi Python.

Konfigurasi build berikut menetapkan kolom pythonPackages untuk mengupload paket Python dist/my-pkg.whl ke repositori Artifact Registry https://us-east1-python.pkg.dev/my-project/my-repo:

YAML

artifacts:
  pythonPackages:
   - repository: 'https://us-east1-python.pkg.dev/my-project/my-repo'
     paths: ['dist/my-pkg.whl']

JSON

{
  "artifacts": {
    "pythonPackages": [
      {
        "repository": "https://us-east1-python.pkg.dev/my-project/my-repo",
        "paths": ["dist/my-pkg.whl"]
      }
    ]
  }
}

npmPackages

Gunakan kolom npmPackages untuk mengonfigurasi Cloud Build guna mengupload paket npm yang telah di-build ke repositori yang didukung di Artifact Registry. Anda harus memberikan nilai untuk repository dan packagePath.

Kolom repository menentukan repositori Artifact Registry untuk menyimpan paket Anda. Kolom packagePath menentukan direktori lokal yang berisi paket npm yang akan diupload. Direktori ini harus berisi file package.json.

Sebaiknya gunakan jalur absolut untuk nilai packagePath. Anda dapat menggunakan . untuk merujuk ke direktori kerja saat ini, tetapi kolom tidak boleh dihilangkan atau dibiarkan kosong. Untuk mengetahui petunjuk selengkapnya tentang cara menggunakan npmPackages, lihat Mem-build dan menguji aplikasi Node.js.

Konfigurasi build berikut menetapkan kolom npmPackages untuk mengupload paket npm di direktori /workspace/my-pkg ke repositori Artifact Registry https://us-east1-npm.pkg.dev/my-project/my-repo.

YAML

artifacts:
  npmPackages:
   - repository: 'https://us-east1-npm.pkg.dev/my-project/my-repo'
     packagePath: '/workspace/my-pkg'

JSON

{
  "artifacts": {
    "npmPackages": [
      {
        "repository": "https://us-east1-npm.pkg.dev/my-project/my-repo",
        "packagePath": "/workspace/my-pkg"
      }
    ]
  }
}

Menggunakan Dockerfile

Jika Anda menjalankan build Docker di Cloud Build menggunakan gcloud CLI atau pemicu build, Anda dapat menggunakan Dockerfile tanpa file konfigurasi build terpisah. Jika ingin melakukan lebih banyak penyesuaian pada build Docker, Anda dapat menyediakan file konfigurasi build selain Dockerfile. Untuk mengetahui petunjuk tentang cara mem-build image Docker menggunakan Dockerfile, lihat Panduan memulai: Build.

Jaringan Cloud Build

Saat menjalankan setiap langkah build, Cloud Build akan melampirkan penampung langkah ke jaringan Docker lokal bernama cloudbuild. Jaringan cloudbuild menghosting Kredensial Default Aplikasi (ADC) yang dapat digunakan layanan Google Cloud untuk menemukan kredensial Anda secara otomatis. Jika Anda menjalankan penampung Docker bertingkat dan ingin mengekspos ADC ke penampung pokok atau menggunakan gcloud dalam langkah docker, gunakan flag --network dalam langkah build docker:

YAML

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '--network=cloudbuild', '.']

JSON

{
  "steps": [
    {
      "name": "gcr.io/cloud-builders/docker",
      "args": [
        "build",
        "--network=cloudbuild",
        "."
      ]
   }
  ]
}

Langkah selanjutnya