Men-deploy pipeline CI/CD untuk alur kerja pemrosesan data

Last reviewed 2023-05-12 UTC

Dokumen ini menjelaskan cara Anda men-deploy arsitektur di Menggunakan pipeline CI/CD untuk alur kerja pemrosesan data.

Deployment ini ditujukan untuk data scientist dan analis data yang membuat tugas pemrosesan data yang dijalankan secara berulang guna membantu menyusun riset dan pengembangan (R&D) untuk memelihara pemrosesan data secara sistematis dan otomatis.

Data scientist dan analis dapat mengadaptasi metodologi dari praktik CI/CD untuk membantu memastikan pemrosesan data dan alur kerja yang memiliki kualitas tinggi, kemudahan dalam pemeliharaan dan kemampuan adaptasi. Berikut adalah metode yang dapat Anda terapkan:

  • Kontrol versi kode sumber.
  • Membangun, menguji, dan men-deploy aplikasi secara otomatis.
  • Isolasi dan pemisahan lingkungan dari produksi.
  • Prosedur yang dapat direplikasi untuk penyiapan lingkungan.

Arsitektur

Diagram berikut menunjukkan tampilan mendetail dari langkah-langkah pipeline CI/CD untuk pipeline pengujian dan produksi.

Diagram arsitektur pipeline CI/CD.

Dalam diagram sebelumnya, pipeline pengujian dimulai saat developer meng-commit perubahan kode ke Cloud Source Repositories dan berakhir setelah lulus pengujian integrasi alur kerja pemrosesan data. Di tahap ini, pipeline akan menayangkan pesan ke Pub/Sub yang berisi referensi ke file arsip Java (JAR) terbaru yang berjalan secara mandiri (diperoleh dari variabel Airflow) di kolom data pesan tersebut.

Dalam diagram sebelumnya, pipeline produksi dimulai saat pesan ditayangkan ke topik Pub/Sub dan berakhir saat file DAG alur kerja produksi di-deploy ke Cloud Composer.

Dalam panduan deployment ini, Anda akan menggunakan produk Google Cloud berikut:

  • Cloud Build untuk membuat pipeline CI/CD yang digunakan untuk membangun, men-deploy, dan menguji alur kerja pemrosesan data, serta pemrosesan data itu sendiri. Cloud Build adalah layanan terkelola yang menjalankan build Anda di Google Cloud. Build adalah serangkaian langkah build dengan setiap langkahnya dijalankan dalam container Docker.
  • Cloud Composer untuk menentukan dan menjalankan langkah-langkah alur kerja, seperti memulai pemrosesan data, melakukan pengujian, dan memverifikasi hasil . Cloud Composer adalah layanan Apache Airflow terkelola, yang menawarkan lingkungan tempat Anda dapat membuat, menjadwalkan, memantau, dan mengelola alur kerja kompleks, seperti alur kerja pemrosesan data di deployment ini.
  • Dataflow untuk menjalankan contoh WordCount Apache Beam sebagai contoh pemrosesan data.

Tujuan

  • Mengonfigurasi lingkungan Cloud Composer.
  • Membuat bucket Cloud Storage untuk data Anda.
  • Membuat pipeline build, pengujian, dan produksi.
  • Mengonfigurasi pemicu build.

Pengoptimalan biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:

Sebelum memulai

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan diaktifkan di project.

Kode sampel

Kode sampel untuk deployment ini ada dalam dua folder:

  • Folder env-setup berisi skrip shell untuk penyiapan awal lingkungan Google Cloud.
  • Folder source-code berisi kode yang dikembangkan seiring waktu, harus dikontrol sumber, dan memicu proses build serta pengujian otomatis. Folder ini berisi subfolder berikut:

    • Folder data-processing-code berisi kode sumber proses Apache Beam.
    • Folder workflow-dag berisi definisi DAG composer untuk alur kerja pemrosesan data dengan langkah-langkah untuk mendesain, menerapkan, dan menguji proses Dataflow.
    • Folder build-pipeline berisi dua konfigurasi Cloud Build, masing-masing untuk pipeline pengujian dan pipeline produksi. Folder ini juga berisi skrip dukungan untuk pipeline.

Untuk deployment ini, file kode sumber untuk pemrosesan data dan alur kerja DAG berada di folder yang berbeda dalam repositori kode sumber yang sama. Dalam lingkungan produksi, file kode sumber biasanya berada di repositori kode sumbernya sendiri dan dikelola oleh tim yang berbeda.

Pengujian integrasi dan unit

Selain pengujian integrasi yang memverifikasi alur kerja pemrosesan data secara end-to-end, ada dua pengujian unit dalam deployment ini. Pengujian unit adalah pengujian otomatis pada kode pemrosesan data dan kode alur kerja pemrosesan data. Pengujian pada kode pemrosesan data ditulis dalam Java dan berjalan secara otomatis selama proses build Maven. Pengujian pada kode alur kerja pemrosesan data ditulis dalam Python dan berjalan sebagai langkah build independen.

Menyiapkan lingkungan Anda

Dalam deployment ini, Anda menjalankan semua perintah di Cloud Shell. Cloud Shell akan muncul sebagai jendela di bagian bawah konsol Google Cloud.

  1. Di konsol Google Cloud, buka Cloud Shell:

    Buka Cloud Shell

  2. Clone repositori kode sampel:

    git clone https://github.com/GoogleCloudPlatform/ci-cd-for-data-processing-workflow.git
    
  3. Jalankan skrip untuk menetapkan variabel lingkungan:

    cd ~/ci-cd-for-data-processing-workflow/env-setup
    source set_env.sh
    

    Skrip ini menetapkan variabel lingkungan berikut:

    • ID project Google Cloud Anda
    • Region dan zona Anda
    • Nama bucket Cloud Storage Anda yang digunakan oleh pipeline build dan alur kerja pemrosesan data.

    Karena variabel lingkungan tidak dipertahankan di antara sesi, Anda harus mereset variabel lingkungan jika sesi Cloud Shell terhenti atau terputus saat mengerjakan deployment ini.

Membuat lingkungan Cloud Composer

Dalam deployment ini, Anda akan menyiapkan lingkungan Cloud Composer.

  1. Di Cloud Shell, tambahkan peran Ekstensi Agen Layanan Cloud Composer v2 API (roles/composer.ServiceAgentV2Ext) ke akun Agen Layanan Cloud Composer:

    gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \
        --member serviceAccount:service-$PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com \
        --role roles/composer.ServiceAgentV2Ext
    
  2. Di Cloud Shell, buat lingkungan Cloud Composer:

    gcloud composer environments create $COMPOSER_ENV_NAME \
        --location $COMPOSER_REGION \
        --image-version composer-2.0.14-airflow-2.2.5
    
  3. Jalankan skrip untuk menetapkan variabel di lingkungan Cloud Composer. Variabel tersebut diperlukan untuk DAG pemrosesan data.

    cd ~/ci-cd-for-data-processing-workflow/env-setup
    chmod +x set_composer_variables.sh
    ./set_composer_variables.sh
    

    Skrip ini menetapkan variabel lingkungan berikut:

    • ID project Google Cloud Anda
    • Region dan zona Anda
    • Nama bucket Cloud Storage Anda yang digunakan oleh pipeline build dan alur kerja pemrosesan data.

Mengekstrak properti lingkungan Cloud Composer

Cloud Composer menggunakan bucket Cloud Storage untuk menyimpan DAG. Memindahkan file definisi DAG ke bucket memicu Cloud Composer untuk membaca file tersebut secara otomatis. Anda membuat bucket Cloud Storage untuk Cloud Composer saat membuat lingkungan Cloud Composer. Pada prosedur berikut, Anda mengekstrak URL untuk bucket, kemudian mengonfigurasi pipeline CI/CD agar men-deploy definisi DAG secara otomatis ke bucket Cloud Storage.

  1. Di Cloud Shell, ekspor URL untuk bucket sebagai variabel lingkungan:

    export COMPOSER_DAG_BUCKET=$(gcloud composer environments describe $COMPOSER_ENV_NAME \
        --location $COMPOSER_REGION \
        --format="get(config.dagGcsPrefix)")
    
  2. Ekspor nama akun layanan yang digunakan Cloud Composer agar memiliki akses ke bucket Cloud Storage:

    export COMPOSER_SERVICE_ACCOUNT=$(gcloud composer environments describe $COMPOSER_ENV_NAME \
        --location $COMPOSER_REGION \
        --format="get(config.nodeConfig.serviceAccount)")
    

Membuat bucket Cloud Storage

Di bagian ini Anda akan membuat kumpulan bucket Cloud Storage untuk menyimpan hal-hal berikut:

  • Artefak langkah-langkah perantara proses build.
  • File input dan output untuk alur kerja pemrosesan data.
  • Lokasi staging tugas Dataflow untuk menyimpan file biner.

Untuk membuat bucket Cloud Storage, selesaikan langkah-langkah berikut:

  • Di Cloud Shell, buat bucket Cloud Storage dan berikan akun layanan Cloud Composer izin untuk menjalankan alur kerja pemrosesan data:

    cd ~/ci-cd-for-data-processing-workflow/env-setup
    chmod +x create_buckets.sh
    ./create_buckets.sh
    

Membuat topik Pub/Sub

Di bagian ini, Anda akan membuat topik Pub/Sub untuk menerima pesan yang dikirim dari pengujian integrasi alur kerja pemrosesan data agar memicu pipeline build produksi secara otomatis.

  1. Di konsol Google Cloud, buka halaman topik Pub/Sub.

    Buka halaman Topik

  2. Klik Buat Topik.

  3. Untuk mengonfigurasi topik, selesaikan langkah-langkah berikut:

    • Untuk ID Topik, masukkan integration-test-complete-topic.
    • Pastikan opsi Tambahkan langganan default dicentang.
    • Biarkan opsi lainnya tetap kosong.
    • Untuk Enkripsi, pilih Kunci enkripsi yang dikelola Google.
    • Klik Buat Topik.

Mengirim kode sumber ke Cloud Source Repositories

Dalam deployment ini, Anda memiliki satu codebase sumber yang perlu dimasukkan ke kontrol versi. Langkah berikut menunjukkan cara codebase dikembangkan dan berubah seiring waktu. Pipeline yang akan dibangun, di-deploy, dan diuji akan dipicu setiap kali perubahan dikirim ke repositori.

  • Di Cloud Shell, kirim folder source-code ke Cloud Source Repositories:

    gcloud source repos create $SOURCE_CODE_REPO
    cp -r ~/ci-cd-for-data-processing-workflow/source-code ~/$SOURCE_CODE_REPO
    cd ~/$SOURCE_CODE_REPO
    git init
    git remote add google \
        https://source.developers.google.com/p/$GCP_PROJECT_ID/r/$SOURCE_CODE_REPO
    git add .
    git commit -m 'initial commit'
    git push google master
    

    Ini adalah perintah standar untuk menginisialisasi Git di direktori baru dan mengirim konten ke repositori jarak jauh.

Membuat pipeline Cloud Build

Di bagian ini, Anda akan membuat pipeline build yang membangun, men-deploy, dan menguji alur kerja pemrosesan data.

Memberikan akses ke akun layanan Cloud Build

Cloud Build men-deploy DAG Cloud Composer dan memicu alur kerja yang diaktifkan saat Anda memberikan akses tambahan ke akun layanan Cloud Build. Untuk informasi selengkapnya mengenai berbagai peran yang tersedia saat menggunakan Cloud Composer, lihat dokumentasi kontrol akses.

  1. Di Cloud Shell, tambahkan peran composer.admin ke akun layanan Cloud Build agar tugas Cloud Build dapat menetapkan variabel Airflow di Cloud Composer:

    gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \
        --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
        --role=roles/composer.admin
    
  2. Tambahkan peran composer.worker ke akun layanan Cloud Build agar tugas Cloud Build dapat memicu alur kerja data di Cloud Composer:

    gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \
        --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
        --role=roles/composer.worker
    

Membuat pipeline build dan pengujian

Langkah-langkah pipeline pengujian dan build dikonfigurasi di file konfigurasi YAML. Dalam deployment ini, Anda menggunakan image builder bawaan untuk git, maven, gsutil, dan gcloud untuk menjalankan tugas di setiap langkah build. Anda menggunakan substitusi variabel konfigurasi untuk menentukan setelan lingkungan pada waktu build. Lokasi repositori kode sumber ditentukan oleh substitusi variabel dan lokasi bucket Cloud Storage. Build memerlukan informasi ini untuk men-deploy file JAR, file pengujian, dan definisi DAG.

  • Di Cloud Shell, kirimkan file konfigurasi pipeline build untuk membuat pipeline di Cloud Build:

    cd ~/ci-cd-for-data-processing-workflow/source-code/build-pipeline
    gcloud builds submit --config=build_deploy_test.yaml --substitutions=\
    REPO_NAME=$SOURCE_CODE_REPO,\
    _DATAFLOW_JAR_BUCKET=$DATAFLOW_JAR_BUCKET_TEST,\
    _COMPOSER_INPUT_BUCKET=$INPUT_BUCKET_TEST,\
    _COMPOSER_REF_BUCKET=$REF_BUCKET_TEST,\
    _COMPOSER_DAG_BUCKET=$COMPOSER_DAG_BUCKET,\
    _COMPOSER_ENV_NAME=$COMPOSER_ENV_NAME,\
    _COMPOSER_REGION=$COMPOSER_REGION,\
    _COMPOSER_DAG_NAME_TEST=$COMPOSER_DAG_NAME_TEST
    

    Perintah ini menginstruksikan Cloud Build untuk menjalankan build dengan langkah-langkah berikut:

    1. Bangun dan deploy file JAR yang dieksekusi secara mandiri di WordCount.

      1. Lihat kode sumbernya.
      2. Kompilasi kode sumber WordCount Beam ke dalam file JAR yang dieksekusi secara mandiri.
      3. Simpan file JAR di Cloud Storage sehingga dapat diambil oleh Cloud Composer untuk menjalankan tugas pemrosesan WordCount.
    2. Deploy dan siapkan alur kerja pemrosesan data di Cloud Composer.

      1. Jalankan pengujian unit pada kode operator khusus yang digunakan oleh DAG alur kerja.
      2. Deploy file input pengujian dan file referensi pengujian di Cloud Storage. File input pengujian adalah input untuk tugas pemrosesan WordCount. File referensi pengujian digunakan sebagai referensi untuk memverifikasi output tugas pemrosesan WordCount.
      3. Tetapkan variabel Cloud Composer untuk mengarah ke file JAR yang baru dibangun.
      4. Deploy definisi DAG alur kerja ke lingkungan Cloud Composer.
    3. Untuk memicu alur kerja pemrosesan pengujian, jalankan alur kerja pemrosesan data di lingkungan pengujian.

Memverifikasi pipeline build dan pengujian

Setelah mengirimkan file build, verifikasi langkah-langkah build.

  1. Di konsol Google Cloud, buka halaman Histori Build untuk melihat daftar semua build lama dan build yang sedang berjalan.

    Buka halaman Histori Build

  2. Klik build yang sedang berjalan.

  3. Di halaman detail Build, pastikan langkah-langkah build sesuai dengan langkah-langkah yang dijelaskan sebelumnya.

    Detail langkah-langkah build.

    Di halaman detail Build, kolom Status build menyatakan Build successful saat build selesai.

  4. Di Cloud Shell, pastikan file JAR sampel WordCount disalin ke bucket yang benar:

    gsutil ls gs://$DATAFLOW_JAR_BUCKET_TEST/dataflow_deployment*.jar
    

    Outputnya mirip dengan hal berikut ini:

    gs://…-composer-dataflow-source-test/dataflow_deployment_e88be61e-50a6-4aa0-beac-38d75871757e.jar
    
  5. Dapatkan URL ke antarmuka web Cloud Composer Anda. Catat URL tersebut karena akan digunakan di langkah selanjutnya.

    gcloud composer environments describe $COMPOSER_ENV_NAME \
        --location $COMPOSER_REGION \
        --format="get(config.airflowUri)"
    
  6. Gunakan URL dari langkah sebelumnya untuk membuka UI Cloud Composer guna memverifikasi bahwa DAG berhasil dijalankan. Tunggu beberapa menit jika kolom Operasi tidak menampilkan informasi, lalu muat ulang halaman.

    1. Untuk memverifikasi bahwa alur kerja pemrosesan data DAG test_word_count di-deploy dan dalam mode berjalan, arahkan kursor ke lingkaran hijau muda di kolom Operasi dan pastikan ada tulisan Berjalan.

    2. Untuk melihat alur kerja pemrosesan data yang berjalan sebagai grafik, klik lingkaran hijau muda, lalu pada halaman Operasi DAG, klik ID DAG: test_word_count.

    3. Muat ulang halaman Tampilan Grafik untuk mengupdate status operasi DAG yang sedang berjalan. Biasanya membutuhkan waktu sekitar 3-5 menit untuk menyelesaikan alur kerja. Untuk memastikan bahwa operasi DAG berhasil diselesaikan, arahkan kursor ke setiap tugas untuk memastikan bahwa tooltip menyatakan Status: berhasil. Tugas kedua hingga terakhir yang bernama do_comparison adalah pengujian integrasi yang memverifikasi output proses terhadap file referensi.

  7. Setelah pengujian integrasi selesai, tugas terakhir yang bernama publish_test_complete menayangkan pesan ke topik Pub/Sub integration-test-complete-topic yang akan digunakan untuk memicu pipeline build produksi.

    1. Untuk memverifikasi bahwa pesan yang dipublikasikan berisi referensi yang benar ke file JAR terbaru, kita dapat menarik pesan dari langganan Pub/Sub integration-test-complete-topic-sub default.

    2. Di konsol Google Cloud, buka halaman Langganan.

      Buka halaman Langganan

    3. Klik integration-test-complete-topic-sub, pilih tab Pesan dan klik Tarik

    4. Outputnya akan mirip dengan berikut ini:

      Pesan pengujian selesai.

Membuat pipeline produksi

Saat alur kerja pemrosesan pengujian berhasil dijalankan, Anda dapat mempromosikan versi terkini alur kerja ke produksi. Ada beberapa cara untuk men-deploy alur kerja ke produksi:

  • Secara manual.
  • Secara otomatis dipicu saat lulus semua pengujian di lingkungan pengujian atau staging.
  • Secara otomatis dipicu oleh tugas terjadwal.

Dalam deployment ini, Anda memicu build produksi secara otomatis setelah lulus semua pengujian di lingkungan pengujian. Untuk informasi selengkapnya tentang pendekatan otomatis, lihat Rekayasa Rilis.

Sebelum menerapkan pendekatan otomatis, Anda harus memverifikasi build deployment produksi dengan melakukan deployment secara manual ke produksi. Build deployment produksi mengikuti langkah-langkah berikut:

  1. Salin file JAR WordCount dari bucket pengujian ke bucket produksi.
  2. Tetapkan variabel Cloud Composer untuk alur kerja produksi agar mengarah ke file JAR yang baru dipromosikan.
  3. Deploy definisi DAG alur kerja produksi di lingkungan Cloud Composer dan jalankan alur kerja tersebut.

Substitusi variabel menentukan nama file JAR terbaru yang di-deploy ke produksi dengan bucket Cloud Storage yang digunakan oleh alur kerja pemrosesan produksi. Untuk membuat pipeline Cloud Build yang men-deploy alur kerja airflow produksi, selesaikan langkah-langkah berikut:

  1. Di Cloud Shell, baca nama file JAR terbaru dengan mencetak variabel Cloud Composer untuk nama file JAR:

    export DATAFLOW_JAR_FILE_LATEST=$(gcloud composer environments run $COMPOSER_ENV_NAME \
        --location $COMPOSER_REGION variables get -- \
        dataflow_jar_file_test 2>&1 | grep -i '.jar')
    
  2. Gunakan file konfigurasi pipeline build, deploy_prod.yaml, untuk membuat pipeline di Cloud Build:

    cd ~/ci-cd-for-data-processing-workflow/source-code/build-pipeline
    gcloud builds submit --config=deploy_prod.yaml --substitutions=\
    REPO_NAME=$SOURCE_CODE_REPO,\
    _DATAFLOW_JAR_BUCKET_TEST=$DATAFLOW_JAR_BUCKET_TEST,\
    _DATAFLOW_JAR_FILE_LATEST=$DATAFLOW_JAR_FILE_LATEST,\
    _DATAFLOW_JAR_BUCKET_PROD=$DATAFLOW_JAR_BUCKET_PROD,\
    _COMPOSER_INPUT_BUCKET=$INPUT_BUCKET_PROD,\
    _COMPOSER_ENV_NAME=$COMPOSER_ENV_NAME,\
    _COMPOSER_REGION=$COMPOSER_REGION,\
    _COMPOSER_DAG_BUCKET=$COMPOSER_DAG_BUCKET,\
    _COMPOSER_DAG_NAME_PROD=$COMPOSER_DAG_NAME_PROD
    

Memverifikasi alur kerja pemrosesan data yang dibuat oleh pipeline produksi

  1. Dapatkan URL untuk UI Cloud Composer Anda:

    gcloud composer environments describe $COMPOSER_ENV_NAME \
        --location $COMPOSER_REGION \
        --format="get(config.airflowUri)"
    
  2. Untuk memverifikasi DAG alur kerja pemrosesan data produksi telah di-deploy, buka URL yang Anda ambil di langkah sebelumnya dan pastikan DAG prod_word_count ada dalam daftar DAG.

    1. Di halaman DAG, klik Pemicu DAG di baris prod_word_count.
  3. Untuk mengupdate status pengoperasian DAG, klik logo Airflow atau muat ulang halaman. Lingkaran hijau muda di kolom Operasi menunjukkan bahwa DAG sedang berjalan.

  4. Setelah operasi berhasil, arahkan kursor ke lingkaran hijau tua di dekat kolom operasi DAG dan pastikan ada tulisan Berhasil.

  5. Di Cloud Shell, cantumkan file hasil di bucket Cloud Storage:

    gsutil ls gs://$RESULT_BUCKET_PROD
    

    Outputnya mirip dengan yang berikut ini:

    gs://…-composer-result-prod/output-00000-of-00003
    gs://…-composer-result-prod/output-00001-of-00003
    gs://…-composer-result-prod/output-00002-of-00003
    

Membuat pemicu Cloud Build

Di bagian ini, Anda akan membuat pemicu Cloud Build yang menautkan perubahan kode sumber ke proses build pengujian serta di antara pipeline pengujian dan pipeline build produksi.

Mengonfigurasi pemicu pipeline build pengujian

Anda menyiapkan pemicu Cloud Build yang memicu build baru saat perubahan dikirim ke cabang master repositori sumber.

  1. Di konsol Google Cloud, buka halaman Pemicu build.

    Buka halaman Pemicu Build

  2. Klik Create trigger.

  3. Untuk mengonfigurasi setelan pemicu, selesaikan langkah-langkah berikut:

    • Di kolom Nama, masukkan trigger-build-in-test-environment.
    • Di drop-down Region, pilih global (non-regional).
    • Untuk Peristiwa, klik Kirim ke Cabang.
    • Untuk Sumber, pilih data-pipeline-source.
    • Di kolom Nama cabang, masukkan master.
    • Untuk Konfigurasi, klik file konfigurasi Cloud Build (yaml atau json).
    • Untuk Lokasi, klik Repositori.
    • Di kolom lokasi file konfigurasi Cloud Build, masukkan build-pipeline/build_deploy_test.yaml.
  4. Di Cloud Shell, jalankan perintah berikut untuk mendapatkan semua variabel substitusi yang dibutuhkan untuk build. Catat nilai-nilai ini karena nilai tersebut diperlukan pada langkah selanjutnya.

    echo "_COMPOSER_DAG_BUCKET : ${COMPOSER_DAG_BUCKET}
    _COMPOSER_DAG_NAME_TEST : ${COMPOSER_DAG_NAME_TEST}
    _COMPOSER_ENV_NAME : ${COMPOSER_ENV_NAME}
    _COMPOSER_INPUT_BUCKET : ${INPUT_BUCKET_TEST}
    _COMPOSER_REF_BUCKET : ${REF_BUCKET_TEST}
    _COMPOSER_REGION : ${COMPOSER_REGION}
    _DATAFLOW_JAR_BUCKET : ${DATAFLOW_JAR_BUCKET_TEST}"
    
  5. Pada halaman Setelan pemicu, di variabel Substitusi Lanjutan, ubah variabel dengan nilai dari lingkungan yang Anda dapatkan dari langkah sebelumnya. Tambahkan hal berikut satu per satu dan klik + Tambahkan item untuk setiap pasangan nama-nilai.

    • _COMPOSER_DAG_BUCKET
    • _COMPOSER_DAG_NAME_TEST
    • _COMPOSER_ENV_NAME
    • _COMPOSER_INPUT_BUCKET
    • _COMPOSER_REF_BUCKET
    • _COMPOSER_REGION
    • _DATAFLOW_JAR_BUCKET

      Pemetaan pasangan nama-nilai.

  6. Klik Buat.

Mengonfigurasi pemicu pipeline build produksi

Anda akan menyiapkan pemicu Cloud Build yang memicu build produksi setelah lulus pengujian di lingkungan pengujian dan menayangkan pesan ke topik Pub/Sub tests-complete. Pemicu ini mencakup langkah persetujuan dengan build yang perlu disetujui secara manual sebelum pipeline produksi dijalankan.

  1. Di konsol Google Cloud, buka halaman Pemicu build.

    Buka halaman Pemicu Build

  2. Klik Create trigger.

  3. Untuk mengonfigurasi setelan pemicu, selesaikan langkah-langkah berikut:

    • Di kolom Nama, masukkan trigger-build-in-prod-environment.
    • Di drop-down Region, pilih global (non-regional).
    • Untuk Peristiwa, klik pesan Pub/Sub.
    • Untuk Langganan, pilih integration-test-complete-topic.
    • Untuk Sumber, pilih data-pipeline-source.
    • Untuk Revisi, pilih Cabang.
    • Di kolom nama Cabang, masukkan master.
    • Untuk Konfigurasi, klik file konfigurasi Cloud Build (yaml atau json).
    • Untuk Lokasi, klik Repositori.
    • Di kolom lokasi file konfigurasi Cloud Build, masukkan build-pipeline/deploy_prod.yaml.
  4. Di Cloud Shell, jalankan perintah berikut untuk mendapatkan semua variabel substitusi yang dibutuhkan untuk build. Catat nilai-nilai ini karena nilai tersebut diperlukan pada langkah selanjutnya.

    echo "_COMPOSER_DAG_BUCKET : ${COMPOSER_DAG_BUCKET}
    _COMPOSER_DAG_NAME_PROD : ${COMPOSER_DAG_NAME_PROD}
    _COMPOSER_ENV_NAME : ${COMPOSER_ENV_NAME}
    _COMPOSER_INPUT_BUCKET : ${INPUT_BUCKET_PROD}
    _COMPOSER_REGION : ${COMPOSER_REGION}
    _DATAFLOW_JAR_BUCKET_PROD : ${DATAFLOW_JAR_BUCKET_PROD}
    _DATAFLOW_JAR_BUCKET_TEST : ${DATAFLOW_JAR_BUCKET_TEST}"
    
  5. Pada halaman Setelan pemicu, di variabel Substitusi Lanjutan, ubah variabel dengan nilai dari lingkungan yang Anda dapatkan dari langkah sebelumnya. Tambahkan hal berikut satu per satu dan klik + Tambahkan item untuk setiap pasangan nama-nilai.

    • _COMPOSER_DAG_BUCKET
    • _COMPOSER_DAG_NAME_PROD
    • _COMPOSER_ENV_NAME
    • _COMPOSER_INPUT_BUCKET
    • _COMPOSER_REGION
    • _DATAFLOW_JAR_BUCKET_PROD
    • _DATAFLOW_JAR_BUCKET_TEST
    • _DATAFLOW_JAR_FILE_LATEST = $(body.message.data)

      Pemetaan pasangan nama-nilai.

  6. Untuk Persetujuan, pilih Perlu persetujuan sebelum eksekusi build.

  7. Klik Create.

Menguji pemicu

Untuk menguji pemicu, tambahkan kata baru ke file input pengujian dan buat penyesuaian ke file referensi pengujian. Anda perlu memverifikasi bahwa pipeline build dipicu oleh commit push ke Cloud Source Repositories serta alur kerja pemrosesan data berjalan dengan benar dengan file pengujian yang telah diupdate.

  1. Di Cloud Shell, tambahkan kata pengujian di akhir file pengujian:

    echo "testword" >>  ~/$SOURCE_CODE_REPO/workflow-dag/support-files/input.txt
    
  2. Update file referensi hasil pengujian, ref.txt, agar sesuai dengan perubahan yang dilakukan di file input pengujian:

    echo "testword: 1" >>  ~/$SOURCE_CODE_REPO/workflow-dag/support-files/ref.txt
    
  3. Commit dan kirim perubahan ke Cloud Source Repositories:

    cd ~/$SOURCE_CODE_REPO
    git add .
    git commit -m 'change in test files'
    git push google master
    
  4. Di konsol Google Cloud, buka halaman Histori.

    BUKA HALAMAN HISTORI

  5. Untuk memverifikasi bahwa build pengujian baru dipicu push sebelumnya ke cabang master, kolom Ref menyatakan masterdi build yang sedang berjalan.

  6. Di Cloud Shell, dapatkan URL untuk antarmuka web Cloud Composer Anda:

    gcloud composer environments describe $COMPOSER_ENV_NAME \
        --location $COMPOSER_REGION --format="get(config.airflowUri)"
    
  7. Setelah build selesai, buka URL dari perintah sebelumnya untuk memverifikasi bahwa DAG test_word_count sedang berjalan.

    Tunggu hingga operasi DAG selesai, yang akan ditunjukkan saat lingkaran hijau muda di kolom operasi DAG hilang. Biasanya perlu waktu 3-5 menit untuk menyelesaikan proses ini.

  8. Di Cloud Shell, download file hasil pengujian:

    mkdir ~/result-download
    cd ~/result-download
    gsutil cp gs://$RESULT_BUCKET_TEST/output* .
    
  9. Verifikasi bahwa kata yang baru ditambahkan ada di salah satu file hasil:

    grep testword output*
    

    Outputnya mirip dengan hal berikut ini:

    output-00000-of-00003:testword: 1
    
  10. Di konsol Google Cloud, buka halaman Histori.

    Buka halaman Histori

  11. Pastikan bahwa build produksi baru telah dipicu oleh penyelesaian pengujian integrasi dan build tersebut sedang menunggu persetujuan.

  12. Untuk menjalankan pipeline build produksi, pilih kotak centang di samping build, klik Setujui, lalu klik Setujui di kotak konfirmasi.

  13. Setelah build selesai, buka URL dari perintah sebelumnya dan picu DAG prod_word_count secara manual untuk menjalankan pipeline produksi.

Pembersihan

Bagian berikut menjelaskan cara menghindari tagihan di masa mendatang untuk project Google Cloud serta resource Apache Hive dan Dataproc yang digunakan dalam deployment.

Menghapus project Google Cloud

Agar terhindar dari tagihan pada akun Google Cloud untuk resource yang digunakan dalam deployment ini, Anda dapat menghapus project Google Cloud.

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource satu per satu

Jika Anda ingin mempertahankan project yang digunakan untuk deployment ini, jalankan langkah-langkah berikut untuk menghapus resource yang Anda buat.

  1. Untuk menghapus pemicu Cloud Build, selesaikan langkah-langkah berikut:

    1. Di konsol Google Cloud, buka halaman Pemicu.

      Buka halaman Pemicu

    2. Di samping pemicu yang Anda buat, klik Lainnya, lalu klik Hapus.

  2. Di Cloud Shell, hapus lingkungan Cloud Composer:

    gcloud -q composer environments delete $COMPOSER_ENV_NAME \
        --location $COMPOSER_REGION
    
  3. Hapus bucket Cloud Storage dan filenya:

    gsutil -m rm -r gs://$DATAFLOW_JAR_BUCKET_TEST \
        gs://$INPUT_BUCKET_TEST \
        gs://$REF_BUCKET_TEST \
        gs://$RESULT_BUCKET_TEST \
        gs://$DATAFLOW_STAGING_BUCKET_TEST \
        gs://$DATAFLOW_JAR_BUCKET_PROD \
        gs://$INPUT_BUCKET_PROD \
        gs://$RESULT_BUCKET_PROD \
        gs://$DATAFLOW_STAGING_BUCKET_PROD
    
  4. Untuk menghapus topik Pub/Sub dan langganan default, jalankan perintah berikut di Cloud Shell:

    gcloud pubsub topics delete integration-test-complete-topic
    gcloud pubsub subscriptions delete integration-test-complete-topic-sub
    
  5. Hapus repositori:

    gcloud -q source repos delete $SOURCE_CODE_REPO
    
  6. Hapus file dan folder yang Anda buat:

    rm -rf ~/ci-cd-for-data-processing-workflow
    rm -rf ~/$SOURCE_CODE_REPO
    rm -rf ~/result-download
    

    Langkah selanjutnya