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, mengemas, dan mengirim image Docker.
Halaman ini menjelaskan skema file konfigurasi Cloud Build. Untuk petunjuk tentang 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
- 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
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"
},
{
"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",
"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 dari tugas yang Anda inginkan untuk dijalankan oleh Cloud Build:
Langkah-langkah build
Langkah build menentukan tindakan yang Anda inginkan untuk dilakukan Cloud Build. Untuk setiap langkah build, Cloud Build akan menjalankan container docker sebagai instance docker run
. Langkah-langkah build setara dengan perintah dalam
skrip dan memberi Anda fleksibilitas untuk mengeksekusi petunjuk arbitrer
dalam build. Jika Anda dapat mengemas alat build ke dalam container, Cloud Build dapat menjalankannya sebagai bagian dari build Anda. Secara default, Cloud Build menjalankan semua langkah build secara serial di mesin yang sama.
Jika ada langkah-langkah yang dapat berjalan secara serentak, gunakan opsi waitFor.
Anda dapat menyertakan hingga 300 langkah build dalam file konfigurasi.
Gunakan kolom steps
di file konfigurasi build untuk menentukan langkah build. Berikut ini
cuplikan jenis konfigurasi yang mungkin 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 builder
bazel
,
gcloud
, dan
docker
:
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
pada 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, sehingga Anda dapat memanggil
perintah yang didukung oleh alat tersebut. Jika builder yang digunakan dalam langkah build memiliki
entripoint, args 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
pada langkah build memerlukan daftar variabel lingkungan yang akan digunakan
saat menjalankan langkah tersebut. Variabel berupa KEY=VALUE
.
Dalam konfigurasi build berikut, kolom env
pada 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 container langkah. Jika Anda menetapkan kolom dir
pada langkah build,
direktori kerja akan ditetapkan ke /workspace/<dir>
. Jika ini adalah jalur relatif, nilai tersebut akan relatif terhadap direktori kerja build. Jika nilai ini absolut, mungkin berada di luar direktori kerja build, dalam hal ini konten jalur mungkin tidak akan 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 eksekusi langkah. Jika Anda tidak menetapkan kolom ini, langkah tersebut tidak memiliki batas waktu dan akan diizinkan untuk berjalan hingga selesai atau waktu build itu sendiri habis. 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 's'. Contoh: 3.5s
Pada konfigurasi build berikut, waktu ubuntu
akan 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 pada
langkah tersebut. Jika menentukan script
dalam langkah build, Anda tidak dapat menentukan args
atau entrypoint
dalam langkah yang sama. Untuk petunjuk tentang penggunaan kolom script
, lihat Menjalankan skrip bash.
id
Gunakan kolom id
untuk menetapkan ID unik untuk langkah build. id
digunakan dengan kolom waitFor
untuk mengonfigurasi urutan langkah-langkah build yang harus dijalankan. Untuk petunjuk tentang penggunaan 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 selesai
sebelum berjalan. Untuk petunjuk tentang penggunaan 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 kriptografis Cloud KMS. Nilai ini harus ditetapkan dalam rahasia build. Untuk mengetahui informasi tentang penggunaan kolom ini, lihat Menggunakan variabel terenkripsi dalam permintaan build.
volumes
Volume
adalah volume container Docker yang dipasang ke dalam langkah-langkah build untuk mempertahankan file
di seluruh langkah build. Saat Cloud Build menjalankan langkah build, Cloud Build akan otomatis memasang volume workspace
ke /workspace
. Anda dapat menentukan volume tambahan yang akan dipasang ke dalam container 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 tersebut tidak menentukan
jalur /persistent_volume
sebagai volume persisten, langkah pertama akan menulis
file di jalur tersebut, lalu file tersebut akan dihapus sebelum langkah kedua
dieksekusi. Dengan menentukan volume dengan nama yang sama di kedua langkah, konten /persistent_volume
pada langkah pertama akan dipertahankan di 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 tersebut 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 adalah 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 jika langkah tersebut menampilkan kode keluar tertentu.
Jika langkah build gagal dengan kode keluar yang cocok dengan nilai yang Anda berikan di allowExitCodes
, Cloud Build akan mengizinkan langkah build ini gagal tanpa menggagalkan seluruh build Anda.
Jika 100% langkah build Anda gagal, tetapi setiap langkah keluar dengan kode yang telah Anda tentukan di kolom allowExitCodes
, berarti build tersebut masih berhasil.
Namun, jika langkah build gagal, dan menghasilkan kode keluar lain -- kode yang tidak cocok dengan nilai yang telah Anda tetapkan adalah di allowExitCodes
-- maka keseluruhan build akan gagal.
Kode keluar yang relevan untuk build bergantung pada software Anda. Misalnya, "1" adalah kode keluar yang umum di Linux. Anda juga dapat menentukan exit code dalam skrip. Kolom allowExitCodes
menerima angka hingga maksimum 255.
Kolom ini lebih diprioritaskan daripada allowFailure
.
Cuplikan kode berikut memungkinkan build berhasil saat langkah pertama gagal dengan salah satu exit code yang diberikan:
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 berhenti dan status
build
akan menjadi TIMEOUT
. Jika timeout
tidak ditetapkan, timeout
default berdurasi 60 menit
akan diterapkan ke build. Nilai maksimum yang dapat diterapkan ke timeout
adalah
24 jam. timeout
harus ditentukan dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan 's'. Contoh: 3.5s
Dalam cuplikan berikut, timeout
disetel ke 660 detik untuk menghindari waktu tunggu build
karena adanya mode 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 berapa lama build dapat diantrekan. Jika
build berada dalam antrean lebih lama dari nilai yang ditetapkan pada queueTtl
, build
akan berakhir dan status
build ditetapkan ke
EXPIRED
. Jika tidak ada nilai yang diberikan, Cloud Build akan menggunakan nilai default 3600s
(1 jam). queueTtl
mulai berjalan dari createTime
. queueTtl
harus ditentukan dalam detik dengan maksimal sembilan digit pecahan, diakhiri dengan 's', misalnya, 3.5s
.
Dalam cuplikan berikut, timeout
ditetapkan ke 20s
dan queueTtl
ditetapkan ke 10s
.
queueTtl
mulai berdetik di createTime
, yang merupakan waktu build
diminta, dan timeout
mulai berdetak di startTime
, yang merupakan waktu
build dimulai. Oleh karena itu, queueTtl
akan berakhir masa berlakunya 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.
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 pada 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 berupa KEY=VALUE
untuk variabel lingkungan KEY
yang diberi nilai VALUE
.
secretEnv
:
Daftar variabel lingkungan global, yang dienkripsi menggunakan kunci kriptografis 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 menyelesaikan
build, volume dan kontennya akan dihapus. Nama volume dan jalur global
tidak boleh bertentangan dengan volume yang ditentukan sebagai 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
guna menentukan algoritma hash untuk provenance
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 mesin virtual 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 mesin virtual dengan CPU tinggi dapat meningkatkan waktu startup build Anda. Tambahkan opsi machineType
untuk meminta mesin virtual 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 mengetahui 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 2.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
proses build selesai. 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 opsi ini tidak ditetapkan, 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
:
Dengan opsi defaultLogsBucketBehavior
, Anda dapat mengonfigurasi Cloud Build untuk membuat bucket log default dalam project Anda sendiri di region yang sama dengan build Anda. Untuk informasi selengkapnya, lihat Menyimpan log build di bucket yang dimiliki pengguna dan yang diregionalkan.
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"
}
}
dynamic_substitutions
:
Gunakan opsi ini untuk mengaktifkan atau menonaktifkan
perluasan parameter bash
dalam substitusi secara eksplisit. Jika build Anda dipanggil oleh pemicu, kolom dynamic_substitutions
akan selalu disetel ke benar (true) dan tidak perlu ditentukan dalam file konfigurasi build Anda. Jika build dipanggil secara manual, Anda harus
menetapkan kolom dynamic_substitutions
ke benar (true) agar perluasan parameter bash dapat
diinterpretasikan saat menjalankan build.
substitutionOption
:
Anda akan menetapkan opsi ini bersama dengan kolom substitutions
di bawah untuk menentukan
perilaku saat terjadi error dalam pemeriksaan
penggantian.
pool
:
Tetapkan nilai kolom ini ke nama resource kumpulan pribadi untuk menjalankan
build. Untuk mengetahui petunjuk tentang cara menjalankan build di kolam pribadi, lihat
Menjalankan build di kolam pribadi.
requestedVerifyOption
:
Tetapkan nilai requestedVerifyOption
ke VERIFIED
untuk memverifikasi pembuatan
attestations dan
metadata origin untuk
build Anda. Opsi ini juga mengaktifkan pengesahan dan metadata provenance untuk
build dan build regional di kumpulan pribadi. Jika Anda tidak menambahkan requestedVerifyOption: VERIFIED
, Cloud Build akan menghasilkan provenance untuk build global saja.
substitutions
Gunakan substitusi di file konfigurasi build Anda 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 ada dengan nilai variabel yang berbeda. Secara default, build akan menampilkan error jika ada variabel substitusi yang hilang atau substitusi yang hilang. Namun, Anda dapat menggunakan opsi ALLOW_LOOSE
untuk melewati pemeriksaan ini.
Cuplikan berikut menggunakan substitusi untuk mencetak "hello world". Opsi
substitusi ALLOW_LOOSE
ditetapkan, yang berarti build tidak akan menampilkan
error jika ada variabel substitusi yang hilang atau substitusi 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 untuk memfilter
build Anda. 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 memasangkan kumpulan variabel lingkungan rahasia yang berisi nilai terenkripsi dengan kunci Cloud KMS yang akan digunakan untuk mendekripsi nilai.
serviceAccount
Gunakan kolom ini untuk menentukan akun layanan IAM yang akan digunakan pada waktu build. Untuk informasi selengkapnya, lihat Mengonfigurasi akun layanan yang ditentukan pengguna.
images
Kolom images
di file konfigurasi build menentukan satu atau beberapa image Docker Linux yang akan dikirim oleh Cloud Build ke Artifact Registry atau Container Registry (Tidak digunakan lagi). Anda mungkin memiliki build yang menjalankan tugas tanpa memproduksi image Docker Linux. Namun, jika Anda mem-build image dan tidak mengirimkannya ke registry, image akan dihapus setelah build selesai. Jika image yang ditentukan tidak dihasilkan selama proses build, build akan gagal. Untuk mengetahui informasi
selengkapnya tentang penyimpanan image, lihat
Menyimpan artefak di Artifact Registry.
Konfigurasi build berikut menetapkan kolom images
untuk menyimpan image 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-container yang akan disimpan di Cloud Storage. Untuk mengetahui informasi selengkapnya tentang cara menyimpan artefak non-container, 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 Membangun dan menguji aplikasi Java.
Konfigurasi build berikut menetapkan kolom mavenArtifacts
untuk mengupload file my-app-1.0-SNAPSHOT.jar
yang dipaketkan 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 mengetahui informasi selengkapnya, lihat Membangun 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 agar dapat mengupload
paket npm yang Anda buat 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 ini tidak boleh dihilangkan
atau dibiarkan kosong. Untuk petunjuk lebih lanjut tentang cara menggunakan npmPackages
, lihat Membangun 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 menjalankan build Docker di Cloud Build menggunakan gcloud CLI atau pemicu build, Anda dapat menggunakan Dockerfile
tanpa file konfigurasi build terpisah. Jika ingin membuat lebih banyak penyesuaian pada build Docker, Anda dapat menyediakan file konfigurasi build selain Dockerfile
. Untuk mengetahui petunjuk cara mem-build image Docker menggunakan Dockerfile
, lihat Panduan Memulai: Build.
Jaringan Cloud Build
Saat menjalankan setiap langkah build, Cloud Build akan melampirkan container langkah tersebut 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 container Docker bertingkat dan ingin mengekspos ADC ke container pokok, atau menggunakan gsutil
atau gcloud
dalam langkah docker
, gunakan flag --network
di langkah build
Docker Anda:
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
- Pelajari cara membuat file konfigurasi build dasar guna mengonfigurasi build untuk Cloud Build.
- Baca Memulai Build Secara Manual untuk mengetahui petunjuk cara menjalankan build di Cloud Build.