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
results: object(Results)
- 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)
pubsubTopic: string
requestedVerifyOption: enum(RequestedVerifyOption)
workerRelease: string
substitutions: map (key: string, value: string)
tags: [string, string, ...]
serviceAccount: string
secrets: object(Secret)
availableSecrets: object(Secrets)
artifacts: object(Artifacts)
goModules: [object(GoModules), ...]
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",
"results": "object(Results)"
},
{
"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)",
"pubsubTopic: string",
"requestedVerifyOption": "enum(RequestedVerifyOption)",
"workerRelease": "string"
},
"substitutions": "map (key: string, value: string)",
"tags": [
"string",
"string",
"..."
],
"serviceAccount": "string",
"secrets": "object(Secret)",
"availableSecrets": "object(Secrets)",
"artifacts": "object(Artifacts)",
"goModules": [object(GoModules), ...],
"mavenArtifacts": ["object(MavenArtifact)", ...],
"pythonPackages": ["object(PythonPackage)", ...],
"npmPackages": ["object(npmPackage)", ...],
"images": [
"string",
"string",
"..."
]
}
Setiap bagian file konfigurasi build menentukan bagian tugas yang Anda inginkan untuk dijalankan oleh Cloud Build:
Langkah-langkah build
Langkah build menentukan tindakan yang Anda inginkan untuk dilakukan oleh Cloud Build. Untuk setiap langkah build, Cloud Build menjalankan container docker sebagai instance docker run. Langkah-langkah build serupa dengan perintah dalam skrip dan memberi Anda fleksibilitas untuk menjalankan instruksi arbitrer dalam build Anda. Jika Anda dapat memaketkan 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 Anda memiliki langkah-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 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 dari langkah build mengambil daftar argumen dan meneruskannya ke builder yang direferensikan oleh kolom name. Argumen yang diteruskan ke builder akan diteruskan ke alat yang berjalan di builder, sehingga Anda dapat memanggil perintah apa pun yang didukung oleh alat tersebut. Jika builder yang digunakan dalam langkah build memiliki titik entri, args akan digunakan sebagai argumen untuk titik entri tersebut. Jika builder
tidak menentukan titik entri, elemen pertama dalam args 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 tersebut. Variabelnya berupa 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"
]
}
]
}
allowFailure
Dalam 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 akan tetap 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
- 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 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, build akan tetap berhasil.
Namun, jika langkah build gagal, dan menghasilkan kode keluar lain -- yang tidak cocok dengan nilai yang telah Anda tentukan di allowExitCodes -- maka build secara keseluruhan akan gagal.
Kode keluar yang relevan dengan build Anda bergantung pada software Anda. Misalnya, "1" adalah kode keluar yang umum di Linux. Anda juga dapat menentukan exit code Anda sendiri 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 kode keluar yang disediakan:
YAML
steps:
- name: 'ubuntu'
args: ['-c', 'exit 1']
allowExitCodes: [1]
- name: 'ubuntu'
args: ['echo', 'Hello World']
JSON
{
"steps": [
{
"name": "ubuntu",
"args": [
"-c",
"exit 1"
],
"allowExitCodes": [1],
},
{
"name": "ubuntu",
"args": [
"echo",
"Hello World"
]
}
]
}
dir
Gunakan kolom dir di langkah build untuk menetapkan direktori kerja yang akan digunakan saat
menjalankan container 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, sehingga
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"
}
]
}
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 mengetahui petunjuk tentang cara menggunakan waitFor dan id, lihat Mengonfigurasi urutan langkah build.
waitFor
Gunakan kolom waitFor di 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 container Docker yang dipasang ke langkah-langkah build untuk mempertahankan file
di seluruh langkah build. Saat Cloud Build menjalankan langkah build, Cloud Build akan otomatis memasang volume workspace ke dalam /workspace. Anda dapat menentukan volume tambahan yang akan dipasang ke 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 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"
]
}
]
}
timeout
Gunakan kolom timeout di langkah build untuk menetapkan batas waktu untuk menjalankan langkah tersebut. Jika Anda tidak menetapkan kolom ini, langkah akan berjalan hingga selesai atau hingga build itu sendiri kehabisan waktu. Kolom timeout untuk langkah build tidak boleh
melebihi nilai timeout yang ditentukan untuk build.
timeout ditentukan dalam detik (menggunakan format Duration) dengan maksimal sembilan digit pecahan, yang diakhiri dengan s (misalnya: 3.5s).
Dalam konfigurasi build berikut, langkah ubuntu akan habis waktu 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 di langkah build untuk menentukan skrip shell yang akan dijalankan di
langkah tersebut. Jika Anda menentukan script dalam langkah build, Anda tidak dapat menentukan args atau entrypoint dalam langkah yang sama. Untuk mengetahui petunjuk penggunaan kolom script, lihat
Menjalankan skrip bash.
automapSubstitutions
Jika ditetapkan ke true, petakan semua substitusi secara otomatis dan sediakan sebagai variabel lingkungan dalam satu langkah. Jika ditetapkan ke false, abaikan
penggantian untuk langkah tersebut. Untuk contoh, lihat Mengganti nilai variabel.
hasil
Memungkinkan langkah build untuk menyimpan data, lalu melampirkan data tersebut dalam pengesahan dalam hasil build setelah build selesai. Data yang disimpan harus berupa key-value pair, dengan kunci berupa string dan nilai berupa objek JSON. Hasil harus memiliki kolom berikut:
name: Nama hasil. Nama ini muncul dalam pengesahan yang dihasilkan dalam hasil build. Anda juga dapat menggunakan nama ini untuk mereferensikan hasil dalam langkah build. Misalnya, Anda dapat menambahkan nilai ke hasil menggunakanscriptdi langkah build yang sama.attestationContent: (Opsional) Nama pengesahan. Nilai ini dapat berupa nilai apa pun dan akan muncul dalam pengesahan yang dihasilkan dalam hasil build. Kolom ini hanya diperlukan jika Anda berencana memvalidasi pengesahan build.attestationType: (Opsional) Jenis pengesahan. Nilai ini dapat berupa nilai apa pun dan akan muncul dalam pengesahan yang dihasilkan dalam hasil build. Kolom ini hanya diperlukan jika Anda berencana memvalidasi pengesahan build.
Build berikut menggunakan konfigurasi hasil untuk menghasilkan pengesahan
yang memungkinkan pengguna memverifikasi bahwa build hanya menggunakan URL dengan awalan yang didukung
untuk membangun image. Dalam contoh
ini, hasil didefinisikan sebagai allowlisted_prefixes. Selanjutnya,
allowlisted_prefixes ditetapkan sebagai key-value pair dari allowlisted_prefixes
dan [\"github.com\", \"gitlab.com\"], lalu dilampirkan sebagai pengesahan ke
hasil build.
YAML
steps:
- name: "gcr.io/cloud-builders/docker"
id: "build-step"
args: ["build", "-t", "us-docker.pkg.dev/my-project/demo/helloworld-image", "."]
- name: "ubuntu"
id: "check-source-fetch-urls"
results:
- name: "allowlisted_prefixes"
attestationContent: "remote_fetch_allow_list"
attestationType: "https://cloudbuild.googleapis.com/attestations/build_content_restrictions"
script: |
#!/bin/bash
prefixes="[\"github.com\", \"gitlab.com\"]"
echo "allowlisted_prefixes=$prefixes" >> $RESULTS
cat $RESULTS
images:
- "us-docker.pkg.dev/my-project/demo/helloworld-image"
options:
requested_verify_option: VERIFIED
defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"id": "build-step",
"args": [
"build",
"-t",
"us-docker.pkg.dev/my-project/demo/helloworld-image",
"."
]
},
{
"name": "ubuntu",
"id": "check-source-fetch-urls",
"results": [
{
"name": "allowlisted_prefixes",
"attestationContent": "remote_fetch_allow_list",
"attestationType": "https://cloudbuild.googleapis.com/attestations/build_content_restrictions"
}
],
"script": "#!/bin/bash\nprefixes=\"[\\\"github.com\\\", \\\"gitlab.com\\\"]\"\necho \"allowlisted_prefixes=$prefixes\" >> $RESULTS\ncat $RESULTS\n"
}
],
"images": [
"us-docker.pkg.dev/my-project/demo/helloworld-image"
],
"options": {
"requested_verify_option": "VERIFIED",
"defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET"
}
}
timeout
Gunakan kolom timeout di luar langkah build untuk menetapkan batas waktu keseluruhan untuk menjalankan build.
Jika waktu ini berlalu, pengerjaan build akan berhenti dan
status build adalah
TIMEOUT.
Jika timeout tidak ditetapkan, build akan menggunakan timeout default selama 60 menit. Nilai
maksimum untuk timeout adalah 24 jam. timeout ditentukan dalam detik, menggunakan format Duration, dengan maksimal sembilan digit pecahan, diakhiri dengan s (misalnya: 3.5s).
Dalam cuplikan berikut, timeout ditetapkan ke 660 detik untuk menghindari waktu tunggu build habis karena sleep:
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 dimasukkan ke dalam antrean. 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, diakhiri dengan 's',
misalnya, 3.5s.
Dalam cuplikan berikut, timeout ditetapkan ke 20s dan queueTtl ditetapkan ke 10s.
queueTtl mulai berdetak pada createTime, yaitu waktu saat build
diminta, dan timeout mulai berdetak pada startTime, yaitu waktu saat
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 build harus ditulis. Jika Anda tidak menetapkan kolom ini, Cloud Build akan menggunakan nilai defaultLogsBucketBehavior untuk menyimpan log build Anda di bucket yang dibuat Cloud Build di Cloud Storage.
Cuplikan berikut menetapkan Cloud Build untuk menyimpan log build di bucket kustom di Cloud Storage.
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:
enableStructuredLogging:
Mengaktifkan pemetaan kolom log build yang ditentukan
ke kolom LogEntry
saat log build dikirim ke Logging.
Misalnya, jika log build Anda berisi message, pesan akan muncul
di textPayload atau jsonPayload.message dalam entri log
yang dihasilkan. Kolom log build yang tidak dapat dipetakan akan muncul di entri log
jsonPayload. Untuk mengetahui informasi selengkapnya, lihat
Memetakan kolom log build ke kolom entri log.
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. Elemen-elemen tersebut 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 kontennya akan dihapus. Nama dan jalur volume global tidak boleh bertentangan dengan volume yang ditentukan dalam langkah build. Menggunakan volume global dalam
build yang hanya memiliki satu langkah tidak valid karena menandakan permintaan build dengan
konfigurasi yang salah.
pubsubTopic:
Opsi untuk
memberikan nama topik Pub/Sub
guna menerima notifikasi
status build. Jika Anda tidak memberikan nama, Cloud Build akan menggunakan nama topik default cloud-builds. Cuplikan berikut menentukan
bahwa nama topik Pub/Sub adalah my-topic:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/myproject/myimage', '.']
options:
pubsubTopic: 'projects/my-project/topics/my-topic'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"gcr.io/myproject/myimage",
"."
]
}
],
"options": {
"pubsubTopic": "projects/my-project/topics/my-topic"
}
}
sourceProvenanceHash:
Tetapkan opsi sourceProvenanceHash untuk 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 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 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 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 setelah 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 build di
Cloud Logging atau Cloud Storage:
GCS_ONLY: Log build dikirim ke bucket Cloud Storage.CLOUD_LOGGING_ONLY: Log build dikirim ke bucket Logging.LEGACY: Log build dikirim ke bucket di kedua lokasi. Jikaloggingtidak ditentukan, Cloud Build akan menggunakan nilai ini.NONE: Log build tidak disimpan.
Untuk mengetahui informasi selengkapnya tentang manfaat dan pertimbangan untuk penyimpanan log build, lihat Opsi penyimpanan log build.
Cuplikan berikut menentukan bahwa log build 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"
}
}
Gunakan kolom ini saat logging
dikonfigurasi untuk mengirim log build Anda ke Cloud Storage.
Jika logging memiliki nilai GCS_ONLY, Legacy, atau tidak ditentukan, log build Anda akan dikirim ke bucket di Cloud Storage. Dalam hal ini,
Cloud Build kemudian mengevaluasi kolom logsBucket dan
defaultLogsBucketBehavior untuk menentukan bucket Cloud Storage
mana yang menerima log build Anda:
logsBucket |
defaultLogsBucketBehavior |
Tempat log build disimpan |
|---|---|---|
| Bucket ditentukan | Nilai diabaikan | Di bucket yang ditentukan di logsBucket |
| Tidak ada nilai | REGIONAL_USER_OWNED_BUCKET |
Di bucket yang dibuat oleh Cloud Build dan dimiliki pengguna |
| Tidak ada nilai | LEGACY_BUCKET |
Dalam bucket yang dibuat oleh Cloud Build dan dimiliki oleh Google Cloud |
| Tidak ada nilai | Tidak ada nilai | Di bucket yang dibuat Cloud Build dan dimiliki pengguna. Jika pembuatan bucket ini gagal, log build akan disimpan di bucket yang dibuat dan dimiliki oleh Cloud Build Google Cloud. |
Untuk mengetahui informasi selengkapnya, lihat Opsi penyimpanan log build.
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 substitusi. Jika build Anda dipanggil oleh pemicu, kolom dynamicSubstitutions selalu ditetapkan ke true dan tidak perlu ditentukan dalam file konfigurasi build Anda. Jika build Anda dipanggil secara manual, Anda harus
menetapkan kolom dynamicSubstitutions ke true agar ekspansi parameter bash
ditafsirkan saat menjalankan build.
automapSubstitutions:
Memetakan semua substitusi secara otomatis ke variabel lingkungan 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 terjadi error dalam pemeriksaan
substitusi.
pool:
Tetapkan nilai kolom ini ke nama resource pool pribadi untuk menjalankan
build. Untuk mengetahui petunjuk tentang cara menjalankan build di pool pribadi, lihat
Menjalankan build di pool pribadi.
requestedVerifyOption:
Tetapkan nilai requestedVerifyOption ke VERIFIED untuk mengaktifkan dan memverifikasi
pembuatan
pengesahan dan
metadata provenance untuk
build Anda. Setelah ditetapkan, build Anda hanya akan ditandai SUCCESS
jika pengesahan dan provenance dibuat.
workerRelease:
Pilih saluran rilis atau versi tertentu.
Konfigurasi build berikut menetapkan kolom workerRelease ke saluran reguler:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
options:
workerRelease: regular
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"us-central1-docker.pkg.dev/myproject/myrepo/myimage",
"."
]
}
],
"options": {
"workerRelease": "regular"
}
}
Contoh berikut menetapkan kolom workerRelease ke versi tertentu:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
options:
workerRelease: 2026.09
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"args": [
"build",
"-t",
"us-central1-docker.pkg.dev/myproject/myrepo/myimage",
"."
]
}
],
"options": {
"workerRelease": "2026.09"
}
}
substitutions
Gunakan substitusi 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 akan menampilkan error jika ada variabel substitusi yang tidak ada atau substitusi yang tidak ada. Namun, Anda dapat menggunakan opsi ALLOW_LOOSE
untuk melewati pemeriksaan ini.
Cuplikan berikut menggunakan substitusi untuk mencetak "Halo Dunia". Opsi substitusi ALLOW_LOOSE ditetapkan, yang berarti build tidak akan menampilkan error jika ada variabel substitusi yang tidak ada atau substitusi yang tidak ada.
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 Anda 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 mereferensikan satu atau beberapa secret dari Secret Manager atau Cloud KMS dalam permintaan build Anda. Cloud Build dapat menggunakan secret tersebut untuk melakukan tindakan selama proses build, seperti login ke akun.
Secret Manager
Untuk menggunakan secret Secret Manager dalam file konfigurasi build, tambahkan kolom secretManager ke kolom availableSecrets dalam file konfigurasi build. Kolom secretManager berisi satu atau beberapa pasangan kolom versionName dan env:
versionName: jalur ke secret di Secret Manager.env: nama lokal (variabel lingkungan) yang dapat digunakan langkah-langkah build untuk mereferensikan secret.
Kolom secretEnv dalam langkah build menentukan variabel lingkungan yang dapat digunakan dalam langkah tersebut.
Konfigurasi berikut menunjukkan cara login ke Docker menggunakan nama pengguna dan sandi Docker yang disimpan di Secret Manager:
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args: ['-c', 'docker login --username=$$USERNAME --password=$$PASSWORD']
secretEnv: ['USERNAME', 'PASSWORD']
availableSecrets:
secretManager:
- versionName: projects/PROJECT_ID/secrets/DOCKER_PASSWORD_SECRET_NAME/versions/DOCKER_PASSWORD_SECRET_VERSION
env: 'PASSWORD'
- versionName: projects/PROJECT_ID/secrets/DOCKER_USERNAME_SECRET_NAME/versions/DOCKER_USERNAME_SECRET_VERSION
env: 'USERNAME'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"entrypoint": "bash",
"args": [
"-c",
"docker login --username=$$USERNAME --password=$$PASSWORD"
],
"secretEnv": [
"USERNAME",
"PASSWORD"
]
}
],
"availableSecrets": {
"secretManager": [{
"versionName": "projects/PROJECT_ID/secrets/DOCKER_PASSWORD_SECRET_NAME/versions/DOCKER_PASSWORD_SECRET_VERSION",
"env": "PASSWORD"
}, {
"versionName": "projects/PROJECT_ID/secrets/DOCKER_USERNAME_SECRET_NAME/versions/DOCKER_USERNAME_SECRET_VERSION",
"env": "USERNAME"
}]
}
}
Untuk informasi selengkapnya, lihat Menggunakan secret.
Cloud KMS
Untuk menggunakan kunci Cloud KMS dalam file konfigurasi build, tambahkan kolom inline
ke kolom availableSecrets dalam file konfigurasi build. Kolom inline
berisi satu atau beberapa pasangan kmsKeyName dan envMap:
kmsKeyName: jalur ke kunci Cloud KMS.envMap: nama lokal (pemetaan lingkungan) yang dapat digunakan langkah-langkah build untuk mereferensikan secret.
Kolom secretEnv dalam langkah build menentukan variabel lingkungan yang dapat digunakan dalam langkah tersebut.
Konfigurasi berikut menunjukkan cara login ke Docker menggunakan nama pengguna dan sandi Docker yang disimpan di Cloud KMS.
YAML
steps:
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args: ['-c', 'docker login --username=$$USERNAME --password=$$PASSWORD']
secretEnv: ['USERNAME', 'PASSWORD']
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args: ['-c', 'docker pull $$USERNAME/IMAGE:TAG']
secretEnv: ['USERNAME']
availableSecrets:
inline:
- kmsKeyName: projects/PROJECT_ID/locations/global/keyRings/USERNAME_KEYRING_NAME/cryptoKeys/USERNAME_KEY_NAME
envMap:
USERNAME: 'ENCRYPTED_USERNAME'
- kmsKeyName: projects/PROJECT_ID/locations/global/keyRings/PASSWORD_KEYRING_NAME/cryptoKeys/PASSWORD_KEY_NAME
envMap:
PASSWORD: 'ENCRYPTED_PASSWORD'
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/docker",
"entrypoint": "bash",
"args": [
"-c",
"docker login --username=$$USERNAME --password=$$PASSWORD"
],
"secretEnv": [
"USERNAME",
"PASSWORD"
]
},
{
"name": "gcr.io/cloud-builders/docker",
"entrypoint": "bash",
"args": [
"-c",
"docker pull $$USERNAME/REPOSITORY:TAG"
],
"secretEnv": [
"USERNAME"
]
}
],
"availableSecrets": {
"inline": [{
"kmsKeyName": "projects/PROJECT_ID/locations/global/keyRings/USERNAME_KEYRING_NAME/cryptoKeys/USERNAME_KEY_NAME",
"envMap": {
"USERNAME": "ENCRYPTED_USERNAME"
}
},
{
"kmsKeyName": "projects/PROJECT_ID/locations/global/keyRings/PASSWORD_KEYRING_NAME/cryptoKeys/PASSWORD_KEY_NAME",
"envMap": {
"PASSWORD": "ENCRYPTED_PASSWORD"
}
}]
}
}
secrets
Secret menyambungkan sekumpulan variabel lingkungan secret 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 mengetahui informasi selengkapnya, lihat Mengonfigurasi akun layanan yang ditentukan pengguna.
Anda tidak dapat menentukan akun layanan Cloud Build lama di kolom ini.
images
Kolom images dalam file konfigurasi build menentukan satu atau beberapa image Docker Linux yang akan dikirim oleh Cloud Build ke Artifact Registry. Anda mungkin memiliki build yang menjalankan tugas tanpa menghasilkan image Docker Linux, tetapi jika Anda membangun image dan tidak mengirimnya ke registry, image tersebut 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 menentukan satu atau beberapa
artefak yang akan disimpan di Cloud Storage atau
Artifact Registry setelah semua langkah build berhasil diselesaikan.
objects
Dalam kolom artifacts, kolom object menentukan satu atau beberapa artefak
yang akan disimpan di Cloud Storage.
Untuk mengetahui informasi selengkapnya, lihat Menyimpan artefak build di Cloud Storage.
Konfigurasi build berikut menetapkan kolom artifacts untuk menyimpan paket Go yang di-build di 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"
]
}
}
}
goModules
Kolom goModules memungkinkan Anda mengupload modul Go non-container ke repositori Go di Artifact Registry. Untuk mengetahui informasi selengkapnya, lihat
Membangun dan menguji aplikasi Go.
Kolom repository_location menentukan repositori Artifact Registry untuk menyimpan paket Anda. Kolom module_path menentukan direktori lokal yang berisi modul Go yang akan diupload. Direktori ini harus berisi file go.mod.
Sebaiknya gunakan jalur absolut untuk nilai module_path. Anda dapat menggunakan
. untuk merujuk ke direktori kerja saat ini, tetapi kolom ini tidak boleh dihilangkan
atau dibiarkan kosong. Untuk petunjuk selengkapnya tentang penggunaan module_path, lihat
Membangun dan menguji aplikasi Go.
Konfigurasi build berikut menetapkan kolom goModules untuk mengupload
modul di example.com/myapp ke repositori Artifact Registry
quickstart-go-repo:
YAML
artifacts:
goModules:
- repositoryName: 'quickstart-go-repo'
repositoryLocation: 'us-central1'
repositoryProjectId: 'argo-local-myname'
sourcePath: '/workspace/myapp'
modulePath: 'example.com/myapp'
moduleVersion: 'v1.0.0'
JSON
{
"artifacts": {
"goModules": [
{
"repositoryName": "quickstart-go-repo",
"repositoryLocation": "us-central1",
"repositoryProjectId": "argo-local-myname",
"sourcePath": "/workspace/myapp",
"modulePath": "example.com/myapp",
"moduleVersion": "v1.0.0"
}
]
}
}
mavenArtifacts
Kolom mavenArtifacts memungkinkan Anda mengupload artefak Java non-container ke repositori Maven di Artifact Registry. Untuk mengetahui informasi selengkapnya, lihat
Membangun dan menguji aplikasi Java.
Contoh: Mengupload semua file Maven dalam folder ke repositori Artifact Registry
Konfigurasi build berikut menetapkan kolom mavenArtifacts untuk mengupload semua file dalam folder /workspace/target/com/mycompany/app/my-app-1/1.0.0/ 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'
deployFolder: '/workspace/target'
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",
"deployFolder": "/workspace/target",
"artifactId": "my-app-1",
"groupId": "com.mycompany.app",
"version": "1.0.0"
}
]
}
}
Untuk men-deploy file Maven ke /workspace/target/com/mycompany/app/my-app-1/1.0.0/, tambahkan opsi -DaltDeploymentRepository=local::default::file:./workspace/target ke perintah deploy Maven.
Contoh: Mengupload file Maven yang dipaketkan ke repositori Artifact Registry
Konfigurasi build berikut menetapkan kolom mavenArtifacts untuk mengupload file paket 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 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 mengupload paket npm yang Anda bangun 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"
}
]
}
}
oci
Gunakan kolom oci untuk mengonfigurasi Cloud Build agar mengupload image OCI Anda ke repositori yang didukung di Artifact Registry. Anda harus memberikan nilai untuk file dan
registryPath.
Kolom registryPath menentukan repositori Artifact Registry untuk menyimpan image Anda. Kolom file menentukan direktori lokal yang berisi
image OCI yang akan diupload. Direktori ini harus berisi file image OCI.
Sebaiknya gunakan jalur absolut untuk nilai file. Anda dapat menggunakan
. untuk merujuk ke direktori kerja saat ini, tetapi kolom ini tidak boleh dihilangkan
atau dibiarkan kosong.
Konfigurasi build berikut menetapkan kolom oci untuk mengupload image OCI di direktori /.pack/layout-repo/my-app ke repositori Artifact Registry https://us-east1-docker.pkg.dev/my-project/my-repo.
YAML
artifacts:
oci:
- file: '/.pack/layout-repo/my-app'
registryPath: 'https://us-east1-docker.pkg.dev/my-project/my-repo'
tags: ["primary_image"]
JSON
{
"artifacts": {
"oci": [
{
"file": "/.pack/layout-repo/my-app",
"registryPath": "https://us-east1-docker.pkg.dev/my-project/my-repo",
"tags": ["primary_image"]
}
]
}
}
genericArtifacts
Gunakan kolom genericArtifacts untuk mengupload file dengan jenis yang tidak ditentukan sebagai paket baru dalam repositori generik di Artifact Registry.
Konfigurasi ini berguna jika Anda ingin mengupload file generik seperti file teks atau biner, atau jika Anda ingin mengupload paket yang bukan jenis repositori Artifact Registry yang didukung.
Kolom folder menentukan folder yang berisi file yang akan diupload ke repositori generik Anda. Kolom registryPath adalah alamat repositori umum Artifact Registry yang menerima file dari folder Anda.
Konfigurasi build berikut menetapkan kolom genericArtifacts untuk mengupload folder /workspace/binaryOut ke repositori generik Artifact Registry projects/my-project/locations/us-east1/repositories/my-repo/packages/my-pkg/versions/my-version.
YAML
artifacts:
genericArtifacts:
- folder: '/workspace/binaryOut'
registryPath: 'projects/my-project/locations/us-east1/repositories/my-repo/packages/my-pkg/versions/my-version'
JSON
{
"artifacts": {
"genericArtifacts": [
{
"folder": "/workspace/binaryOut",
"registryPath": "projects/my-project/locations/us-east1/repositories/my-repo/packages/my-pkg/versions/my-version"
}
]
}
}
Anda dapat mengonfigurasi artefak generik sebagai dependensi build sehingga Cloud Build mendownload dependensi sebelum build dimulai. Untuk mengetahui informasi selengkapnya, lihat Menentukan artefak generik sebagai dependensi.
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 penyesuaian lebih lanjut pada build Docker, Anda dapat menyediakan file konfigurasi build selain Dockerfile. Untuk mendapatkan petunjuk tentang cara membangun image Docker menggunakan
Dockerfile, lihat Panduan memulai: Membangun.
Jaringan Cloud Build
Saat menjalankan setiap langkah build, Cloud Build akan memasang 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 yang mendasarinya 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 berikutnya
- 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.