Membangun dan menguji aplikasi Python

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:

  • Enable the Cloud Build, Artifact Registry, and Cloud Storage APIs.

    Enable the APIs

  • 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 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.

  1. Di direktori utama project, buat file konfigurasi Cloud Build dengan nama cloudbuild.yaml.

  2. Persyaratan penginstalan: Image python dari Docker Hub sudah diinstal sebelumnya dengan pip. Untuk menginstal dependensi dari pip, tambahkan langkah build dengan kolom berikut:

    • name: Tetapkan nilai kolom ini ke python atau python:<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 di name. Tetapkan nilai kolom ini ke pip untuk memanggil pip sebagai titik entri langkah build dan menjalankan perintah pip.
    • args: Kolom args dari langkah build mengambil daftar argumen dan meneruskannya ke gambar yang dirujuk oleh kolom name. Teruskan argumen untuk menjalankan perintah pip install di kolom ini. Flag --user dalam perintah pip 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']
    
  3. 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 ke python untuk menggunakan image python dari Docker Hub untuk tugas Anda.
    • entrypoint: Menetapkan nilai kolom ini ke python untuk menjalankan perintah python.
    • args: Menambahkan argumen untuk menjalankan perintah python 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']
    
  4. Build: Di file konfigurasi build, tentukan builder dan args untuk membangun aplikasi Anda:

    • name: Tetapkan nilai kolom ini ke python untuk menggunakan image python dari Docker Hub untuk tugas Anda.
    • entrypoint: Menetapkan nilai kolom ini ke python untuk menjalankan perintah python.
    • args: Menambahkan argumen untuk menjalankan build.

    Langkah build berikut memulai build:

        - name: 'python'
          entrypoint: 'python'
          args: ['-m', 'build']
    
  5. 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.
  6. Opsional: Mengaktifkan provenance untuk build regional

    Jika Anda menggunakan build regional, tambahkan kolom requestedVerifyOption di options pada file konfigurasi build Anda. Setel nilai ke VERIFIED untuk mengaktifkan pembuatan metadata provenance. Jika Anda tidak menambahkan requestedVerifyOption: VERIFIED, Cloud Build akan menghasilkan provenance untuk build global saja.

    options:
      requestedVerifyOption: VERIFIED
    
  7. 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'
    
  8. 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