Dokumen ini menjelaskan struktur dan parameter file konfigurasi Cloud Build (cloudbuild.yaml) yang digunakan untuk mengatur langkah-langkah pipeline Image Builder: parsing, build, validasi, dan publikasi rilis.
Ringkasan skema
File cloudbuild.yaml Image Builder standar mengikuti
struktur file konfigurasi Cloud Build standar
dan mengatur tiga langkah build container berurutan: /build, /validate, dan /publish.
substitutions: _GCS_WORKDIR: 'gs://BUCKET_NAME/workdir/' _IMAGE_BUILDER_CONFIG_PATH: 'imagebuilder.yaml' _SERVICE_ACCOUNT: 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL' _IMAGE_OUTPUT_PATH: 'image-builder/binaryOut' _ARTIFACT_REGISTRY_RESOURCE_URI: 'projects/PROJECT_ID/locations/REGION/repositories/REPOSITORY_NAME/packages/PACKAGE_NAME/versions/v${BUILD_ID}' steps: # Step 1: Parse configs and run OS customization on the worker VM - name: 'REGION-docker.pkg.dev/image-builder-official/release/builder:stable' script: | #!/usr/bin/env bash /build id: 'imagebuilder-customize' results: - name: image_builder_telemetry_metrics - name: base_image attestationType: "https://cloudbuild.googleapis.com/attestations/build_content_restrictions" attestationContent: base_image # Step 2: Validate by running system boot checks on the test VM - name: 'REGION-docker.pkg.dev/image-builder-official/release/validator:stable' script: | #!/usr/bin/env bash /validate id: 'imagebuilder-validate' results: - name: image_builder_telemetry_metrics # Step 3: Register OS image and publish tar file to Artifact Registry - name: 'REGION-docker.pkg.dev/image-builder-official/release/builder:stable' script: | #!/usr/bin/env bash /publish id: 'imagebuilder-publish' results: - name: image_builder_telemetry_metrics options: automapSubstitutions: true requestedVerifyOption: VERIFIED substitutionOption: ALLOW_LOOSE dynamicSubstitutions: true logging: CLOUD_LOGGING_ONLY artifacts: generic_artifacts: - folder: '${_IMAGE_OUTPUT_PATH}' registry_path: '${_ARTIFACT_REGISTRY_RESOURCE_URI}' timeout: '3600s'
Variabel substitusi
File cloudbuild.yaml menggunakan variabel pengganti berikut untuk dipetakan langsung ke variabel lingkungan untuk dieksekusi:
substitutions: _GCS_WORKDIR: 'gs://BUCKET_NAME/workdir/' _IMAGE_BUILDER_CONFIG_PATH: 'imagebuilder.yaml' _SERVICE_ACCOUNT: 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL' _IMAGE_OUTPUT_PATH: 'image-builder/binaryOut' _ARTIFACT_REGISTRY_RESOURCE_URI: 'projects/PROJECT_ID/locations/REGION/repositories/REPOSITORY_NAME/packages/PACKAGE_NAME/versions/v${BUILD_ID}'
_GCS_WORKDIR: Jalur Cloud Storage regional yang digunakan sebagai lokasi penyiapan sementara untuk artefak seperti log serial, arsip gambar sementara, dan histori eksekusi tamu. Bucket harus sudah ada._IMAGE_BUILDER_CONFIG_PATH: Jalur ke resep penyesuaianimagebuilder.yamlAnda. Ini dapat berupa jalur Cloud Storage jarak jauh (misalnya,gs://BUCKET_NAME/imagebuilder.yaml), atau jalur relatif di ruang kerja atau repositori GitHub Anda, bergantung pada sumbernya._SERVICE_ACCOUNT: Nama resource Identity and Access Management (IAM) lengkap dari akun layanan yang dikonfigurasi untuk menjalankan build dan mengizinkan langkah-langkah orkestrator._IMAGE_OUTPUT_PATH: Jalur output file tar yang diekspor di dalam direktori Cloud Build/workspace/._ARTIFACT_REGISTRY_RESOURCE_URI(Opsional): URI resource untuk repositori generik di Artifact Registry. Jika disediakan, pipeline akan mengirimkan file tar image imutable yang dibuat dan membuat pengesahan di lokasi ini.
Langkah
Image Builder menjalankan tiga langkah container yang berbeda secara berurutan untuk mengatur build image OS Anda. Ganti REGION di jalur image container dengan region Cloud de Confiance target tempat Anda menyiapkan
pipeline, seperti us-central1, europe-west1, atau asia-east1:
steps: - name: 'REGION-docker.pkg.dev/image-builder-official/release/builder:stable' script: | #!/usr/bin/env bash /build id: 'imagebuilder-customize' - name: 'REGION-docker.pkg.dev/image-builder-official/release/validator:stable' script: | #!/usr/bin/env bash /validate id: 'imagebuilder-validate' - name: 'REGION-docker.pkg.dev/image-builder-official/release/builder:stable' script: | #!/usr/bin/env bash /publish id: 'imagebuilder-publish'
Persyaratan telemetri dan ID langkah
Container orkestrator mengidentifikasi dan melacak progres
setiap fase build—penyesuaian, validasi, dan publikasi—dengan
membaca kolom id dari setiap langkah dalam file cloudbuild.yaml Anda.
ID langkah harus dimulai dengan awalan imagebuilder-, seperti
imagebuilder-customize, imagebuilder-validate, dan imagebuilder-publish,
agar Image Builder dapat mengumpulkan metrik telemetri
spesifik per layanan.
Saat Anda menyertakan image_builder_telemetry_metrics dalam blok results di
setiap langkah, Image Builder akan mengumpulkan metrik eksekusi pipeline
tingkat tinggi secara aman untuk memantau dan melacak keandalan layanan sebagai berikut:
- Eksekusi dan status build: Status berhasil atau gagal dan durasi penyelesaian untuk setiap langkah build dan tindakan penyesuaian.
- Detail lingkungan: Jenis mesin, zona, dan tag versi penampung Compute Engine yang digunakan selama eksekusi.
- Metadata image: Distribusi OS dasar, versi, dan fitur OS tamu yang dikonfigurasi.
- Hasil pengujian validasi: Status lulus, gagal, atau dilewati dari pengujian validasi sistem otomatis, seperti booting VM, Booting Aman, kesehatan block storage, status agen tamu, dan pengikatan driver jaringan.
Langkah penyesuaian
Langkah penyesuaian memvalidasi skema imagebuilder.yaml, memeriksa izin IAM, meluncurkan instance VM pekerja, memasang disk biner penyesuaian, menjalankan penyedia penyesuaian, dan mengekspor partisi disk booting dengan aman.
- Container image:
us-central1-docker.pkg.dev/image-builder-official/release/builder:stable - Perintah skrip:
/build - Sub-blok hasil:
image_builder_telemetry_metrics: Mengumpulkan metrik eksekusi build penyesuaian.base_image(Opsional): Mencatat detail gambar sumber dasar dalam metadata pengesahan build saat Anda menentukan tujuan repositori generik Artifact Registry. SetelattestationType: "https://cloudbuild.googleapis.com/attestations/build_content_restrictions"untuk membuat catatan asal gambar Anda yang dapat diverifikasi.
Langkah validasi
Langkah validasi mem-boot VM pengujian sementara dari image OS yang disesuaikan dan menjalankan rangkaian pengujian validasi otomatis aktif.
- Container image:
us-central1-docker.pkg.dev/image-builder-official/release/validator:stable - Perintah skrip:
/validate - Sub-blok hasil:
image_builder_telemetry_metricsmengumpulkan metrik eksekusi pengujian validasi.
Langkah publikasi
Langkah publikasi mendaftarkan image OS akhir, menghapus disk perantara sementara, mengupload payload file tar ke Artifact Registry jika dikonfigurasi, dan menulis catatan asal Supply Chain Levels for Software Artifacts (SLSA).
- Container image:
us-central1-docker.pkg.dev/image-builder-official/release/builder:stable - Perintah skrip:
/publish - Sub-blok hasil:
image_builder_telemetry_metricsmengumpulkan metrik eksekusi rilis publikasi.
Opsi
Flag opsi menentukan setelan eksekusi di server Cloud Build. Anda harus mengonfigurasi opsi berikut:
options:
automapSubstitutions: true
requestedVerifyOption: VERIFIED
substitutionOption: ALLOW_LOOSE
dynamicSubstitutions: true
logging: CLOUD_LOGGING_ONLY
Untuk mengetahui informasi selengkapnya tentang setelan ini, lihat Opsi dalam file konfigurasi Cloud Build.
automapSubstitutions: Setel ketrueuntuk memastikan variabel penggantian dipetakan ke lingkungan container.- Tetapkan
requestedVerifyOptionkeVERIFIED. Setelan ini menginstruksikan Cloud Build untuk otomatis membuat pengesahan provenance build SLSA. Provenans ini memberikan verifikasi kriptografi bahwa image dibuat persis seperti yang ditentukan dalam pipeline Anda, sehingga membantu mencegah gangguan dan memastikan integritas rantai pasokan software. - Tetapkan
substitutionOptionkeALLOW_LOOSE. Setelan ini diperlukan untuk memaksa Cloud Build mengabaikan parameter dinamis atau argumen skrip yang tidak digunakan. dynamicSubstitutions: Setel ketrueagar variabel evaluasi sistem, seperti${BUILD_ID}, dapat diselesaikan dengan benar.logging: Setel keCLOUD_LOGGING_ONLYuntuk membatasi log build secara ketat ke Cloud Logging.
Artefak
Konfigurasi blok artifacts saat Anda mengekspor arsip dan pengesahan gambar ke Artifact Registry:
artifacts:
generic_artifacts:
- folder: '${_IMAGE_OUTPUT_PATH}'
registry_path: '${_ARTIFACT_REGISTRY_RESOURCE_URI}'