Halaman ini menjelaskan cara mengonfigurasi Cloud Build untuk membangun dan menguji aplikasi Python Anda, mengupload artefak Anda ke Artifact Registry, membuat informasi provenance, dan menyimpan log pengujian Anda di Cloud Storage.
Dengan Cloud Build, Anda dapat menggunakan image container yang tersedia secara publik untuk menjalankan tugas. Image python
publik dari Docker Hub sudah terinstal dengan alat python
dan pip
. Anda dapat mengonfigurasi Cloud Build
menggunakan alat ini untuk menginstal dependensi, mem-build, dan menjalankan pengujian unit menggunakan alat ini.
Sebelum memulai
Petunjuk pada halaman ini mengasumsikan bahwa Anda sudah familier dengan Python. Selain itu:
-
Aktifkan API Cloud Build, Artifact Registry, and Cloud Storage.
- Untuk menjalankan perintah
gcloud
di halaman ini, instal Google Cloud CLI. - Siapkan project Python Anda.
- Memiliki repositori Python di Artifact Registry. Jika Anda belum memilikinya, buat repositori baru.
- Jika Anda ingin menyimpan log pengujian di Cloud Storage, buat bucket di Cloud Storage.
Izin IAM yang diperlukan
Untuk menyimpan log pengujian di Logging, berikan peran Storage Object Creator (
roles/storage.objectCreator
) untuk bucket Cloud Storage ke akun layanan Cloud Build.Untuk menyimpan image yang di-build di Artifact Registry, berikan peran Artifact Registry Writer (
roles/artifactregistry.writer
) ke akun layanan Cloud Build.
Untuk mengetahui petunjuk tentang cara memberikan peran ini, lihat Memberikan peran menggunakan halaman IAM.
Mengonfigurasi build Python
Bagian ini membahas contoh file konfigurasi build untuk aplikasi Python. Bagian ini berisi langkah-langkah build untuk menginstal persyaratan, menambahkan pengujian unit, dan setelah pengujian lulus, mem-build, dan men-deploy aplikasi.
Di direktori utama project, buat file konfigurasi Cloud Build dengan nama
cloudbuild.yaml
.Persyaratan penginstalan: Image
python
dari Docker Hub sudah diinstal sebelumnya denganpip
. Untuk menginstal dependensi daripip
, tambahkan langkah build dengan kolom berikut:name
: Tetapkan nilai kolom ini kepython
ataupython:<tag>
untuk menggunakan image python dari Docker Hub untuk tugas ini. Untuk melihat daftar tag yang tersedia untuk gambar Python lainnya, lihat Referensi Docker Hub untuk image Python.entrypoint
: Menetapkan kolom ini akan mengganti titik entri default dari gambar yang direferensikan diname
. Tetapkan nilai kolom ini kepip
untuk memanggilpip
sebagai titik entri langkah build dan menjalankan perintahpip
.args
: Kolomargs
dari langkah build mengambil daftar argumen dan meneruskannya ke gambar yang dirujuk oleh kolomname
. Teruskan argumen untuk menjalankan perintahpip install
di kolom ini. Flag--user
dalam perintahpip install
memastikan bahwa langkah-langkah build berikutnya dapat mengakses modul yang diinstal dalam langkah build ini.
Langkah build berikut menambahkan argumen ke persyaratan penginstalan:
steps: - name: 'python' entrypoint: 'python' args: ['-m', 'pip', 'install', '--upgrade', 'pip'] - name: python entrypoint: python args: ['-m', 'pip', 'install', 'build', 'pytest', 'Flask', '--user']
Menambahkan pengujian unit: Jika telah menentukan pengujian unit dalam aplikasi menggunakan framework pengujian seperti
pytest
, Anda dapat mengonfigurasi Cloud Build untuk menjalankan pengujian dengan menambahkan kolom berikut dalam langkah build:name
: Tetapkan nilai kolom ini kepython
untuk menggunakan image python dari Docker Hub untuk tugas Anda.entrypoint
: Menetapkan nilai kolom ini kepython
untuk menjalankan perintahpython
.args
: Menambahkan argumen untuk menjalankan perintahpython pytest
.
Langkah build berikut menyimpan output log
pytest
ke file XML JUNIT. Nama file ini dibuat menggunakan$SHORT_SHA
, versi pendek ID commit yang terkait dengan build Anda. Langkah build berikutnya akan menyimpan log dalam file ini ke Cloud Storage.- name: 'python' entrypoint: 'python' args: ['-m', 'pytest', '--junitxml=${SHORT_SHA}_test_log.xml']
Build: Di file konfigurasi build, tentukan builder dan
args
untuk membangun aplikasi Anda:name
: Tetapkan nilai kolom ini kepython
untuk menggunakan image python dari Docker Hub untuk tugas Anda.entrypoint
: Menetapkan nilai kolom ini kepython
untuk menjalankan perintahpython
.args
: Menambahkan argumen untuk menjalankan build.
Langkah build berikut memulai build:
- name: 'python' entrypoint: 'python' args: ['-m', 'build']
Upload ke Artifact Registry:
Cloud Build menghasilkan informasi provenance build Supply chain Levels for Software Artifacts (SLSA) untuk paket Python mandiri saat Anda mengupload artefak ke Artifact Registry menggunakan kolom
python_packages
yang tersedia di file konfigurasi Cloud Build.Di file konfigurasi, tambahkan kolom
pythonPackages
dan tentukan repositori Python Anda di Artifact Registry:artifacts: pythonPackages: - repository: 'https://LOCATION-python.pkg.dev/PROJECT-ID/REPOSITORY' paths: ['dist/*']
Ganti nilai berikut:
- PROJECT-ID adalah ID project Google Cloud yang berisi repositori Artifact Registry Anda.
- REPOSITORY adalah ID repositori.
- LOCATION adalah lokasi regional atau multi-regional untuk repositori.
Opsional: Mengaktifkan provenance untuk build regional
Jika Anda menggunakan build regional, tambahkan kolom
requestedVerifyOption
dioptions
pada file konfigurasi build Anda. Setel nilai keVERIFIED
untuk mengaktifkan pembuatan metadata provenance. Jika Anda tidak menambahkanrequestedVerifyOption: VERIFIED
, Cloud Build akan menghasilkan provenance untuk build global saja.options: requestedVerifyOption: VERIFIED
Simpan log pengujian ke Cloud Storage: Anda dapat mengonfigurasi Cloud Build untuk menyimpan log pengujian di Cloud Storage dengan menentukan lokasi bucket yang ada dan jalur ke log pengujian. Langkah build berikut menyimpan log pengujian yang Anda simpan dalam file XML JUNIT ke bucket Cloud Storage:
artifacts: objects: location: 'gs://${_BUCKET_NAME}/' paths: - '${SHORT_SHA}_test_log.xml'
Mulai build: secara manual atau gunakan pemicu build.
Setelah build selesai, Anda dapat melihat detail repositori di Artifact Registry.
Anda juga dapat melihat metadata provenance build dan memvalidasi provenance untuk membantu melindungi supply chain software Anda.
Langkah selanjutnya
- Pelajari cara melihat hasil build.
- Pelajari cara mengamankan build.
- Pelajari cara membangun dan memasukkan aplikasi Python dalam container.
- Pelajari cara menggunakan dependensi pribadi.
- Pelajari cara melakukan blue/green deployment di Compute Engine.
- Pelajari cara memecahkan masalah error build.