Membangun dan menguji aplikasi Python

Halaman ini menjelaskan cara mengonfigurasi Cloud Build untuk mem-build dan menguji aplikasi Python, mengupload artefak ke Artifact Registry, membuat informasi asal, dan menyimpan log pengujian di Cloud Storage.

Cloud Build memungkinkan Anda menggunakan image container yang tersedia secara publik untuk menjalankan tugas. Image python publik dari Docker Hub sudah diinstal sebelumnya 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 di halaman ini mengasumsikan bahwa Anda sudah memahami 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 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 cara memberikan peran ini, lihat Memberikan peran menggunakan halaman IAM.

Mengonfigurasi build Python

Bagian ini membahas contoh file konfigurasi build untuk aplikasi Python. File ini memiliki 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 bernama cloudbuild.yaml.

  2. Persyaratan penginstalan: Image python dari Docker Hub sudah diprainstal 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 image Python lainnya, lihat referensi Docker Hub untuk image python.
    • entrypoint: Menetapkan kolom ini akan mengganti titik entri default image 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 image yang dirujuk oleh kolom name. Teruskan argumen untuk menjalankan perintah pip install di kolom ini. Flag --user dalam perintah pip install memastikan bahwa langkah build berikutnya dapat mengakses modul yang diinstal dalam langkah build ini.

    Langkah build berikut menambahkan argumen untuk menginstal persyaratan:

     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 di 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: Tetapkan 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 singkat dari 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: Dalam file konfigurasi build, tentukan builder dan args untuk mem-build aplikasi Anda:

    • name: Tetapkan nilai kolom ini ke python untuk menggunakan image python dari Docker Hub untuk tugas Anda.
    • entrypoint: Tetapkan 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:

    Dalam 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 pembuatan asal

    Cloud Build dapat menghasilkan metadata provenans build Supply chain Levels for Software Artifacts (SLSA) yang dapat diverifikasi untuk membantu mengamankan pipeline continuous integration Anda.

    Untuk mengaktifkan pembuatan asal, tambahkan requestedVerifyOption: VERIFIED ke bagian options dalam file konfigurasi Anda.

  7. Menyimpan log pengujian ke Cloud Storage: Anda dapat mengonfigurasi Cloud Build untuk menyimpan log pengujian di Cloud Storage dengan menentukan lokasi dan jalur bucket yang ada 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 menggunakan pemicu build.

    Setelah build selesai, Anda dapat melihat detail repositori di Artifact Registry.

    Anda juga dapat melihat metadata asal build dan memvalidasi asal.

Langkah selanjutnya