Menguji DAG Airflow

Cloud Composer 1 | Cloud Composer 2

Sebelum men-deploy DAG ke produksi, Anda dapat menjalankan sub-perintah CLI Airflow untuk mengurai kode DAG dalam konteks yang sama dengan tempat DAG dijalankan.

Pengujian selama pembuatan DAG

Anda dapat menjalankan satu instance tugas secara lokal dan melihat output log. Dengan menampilkan output, Anda dapat memeriksa error sintaksis dan tugas. Pengujian secara lokal tidak memeriksa dependensi atau mengomunikasikan status ke database.

Sebaiknya tempatkan DAG dalam folder data/test di lingkungan pengujian Anda.

Membuat direktori pengujian

Di bucket lingkungan Anda, buat direktori pengujian dan salin DAG ke direktori tersebut.

gsutil cp -r BUCKET_NAME/dags \
  BUCKET_NAME/data/test

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang terkait dengan lingkungan Cloud Composer Anda.

Contoh:

gsutil cp -r gs://us-central1-example-environment-a12bc345-bucket/dags \
  gs://us-central1-example-environment-a12bc345-bucket/data/test

Untuk mengetahui informasi selengkapnya tentang mengupload DAG, lihat Menambahkan dan mengupdate DAG.

Memeriksa error sintaksis

Untuk memeriksa error sintaksis di DAG yang Anda upload ke folder /data/test, masukkan perintah gcloud berikut:

Aliran Udara 2

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  dags list -- --subdir /home/airflow/gcs/data/test

Aliran Udara 1

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  list_dags -- -sd /home/airflow/gcs/data/test

Ganti kode berikut:

  • ENVIRONMENT_NAME: nama lingkungan.
  • ENVIRONMENT_LOCATION: region tempat lingkungan berada.

Memeriksa error tugas

Untuk memeriksa error khusus tugas di DAG yang Anda upload ke folder /data/test, jalankan perintah gcloud berikut:

Aliran Udara 2

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  tasks test -- --subdir /home/airflow/gcs/data/test \
  DAG_ID TASK_ID \
  DAG_EXECUTION_DATE

Aliran Udara 1

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  test -- -sd /home/airflow/gcs/data/test DAG_ID \
  TASK_ID DAG_EXECUTION_DATE

Ganti kode berikut:

  • ENVIRONMENT_NAME: nama lingkungan.
  • ENVIRONMENT_LOCATION: region tempat lingkungan berada.
  • DAG_ID: ID DAG.
  • TASK_ID: ID tugas.
  • DAG_EXECUTION_DATE: tanggal eksekusi DAG. Tanggal ini digunakan untuk tujuan template. Terlepas dari tanggal yang Anda tentukan di sini, DAG akan langsung berjalan.

Contoh:

Aliran Udara 2

gcloud composer environments run \
  example-environment \
  --location us-central1 \
  tasks test -- --subdir /home/airflow/gcs/data/test \
  hello_world print_date 2021-04-22

Aliran Udara 1

gcloud composer environments run example-environment \
  --location us-central1 \
  test -- -sd /home/airflow/gcs/data/test \
  hello_world print_date 2021-04-22

Mengupdate dan menguji DAG yang di-deploy

Untuk menguji update pada DAG di lingkungan pengujian Anda:

  1. Salin DAG yang di-deploy dan ingin Anda update ke data/test.
  2. Update DAG.
  3. Uji DAG.
    1. Periksa apakah ada error sintaksis.
    2. Periksa error khusus tugas.
  4. Pastikan DAG berhasil dijalankan.
  5. Nonaktifkan DAG di lingkungan pengujian Anda.
    1. Buka halaman UI Airflow > DAG.
    2. Jika DAG yang Anda modifikasi terus berjalan, nonaktifkan DAG.
    3. Untuk mempercepat tugas yang belum selesai, klik tugas dan Tandai Berhasil.
  6. Deploy DAG ke lingkungan produksi Anda.
    1. Nonaktifkan DAG di lingkungan produksi Anda.
    2. Upload DAG yang telah diupdate ke folder dags/ di lingkungan produksi Anda.

FAQ untuk menguji DAG

Bagaimana cara mengisolasi DAG yang berjalan di lingkungan produksi dan pengujian?

Misalnya, Airflow memiliki repositori global kode sumber di folder dags/ yang dibagikan oleh semua DAG yang dijalankan. Anda ingin mengupdate kode sumber dalam produksi atau pengujian tanpa mengganggu jalannya DAG.

Aliran udara tidak menyediakan isolasi DAG yang kuat. Sebaiknya pertahankan produksi dan uji lingkungan Cloud Composer yang terpisah untuk mencegah DAG pengujian mengganggu DAG produksi Anda.

Bagaimana cara menghindari interferensi DAG saat saya menjalankan pengujian integrasi dari cabang GitHub yang berbeda

Gunakan nama tugas yang unik untuk mencegah gangguan. Misalnya, Anda dapat memberikan awalan ID tugas dengan nama cabang.

Apa praktik terbaik untuk pengujian integrasi dengan Airflow?

Sebaiknya gunakan lingkungan khusus untuk pengujian integrasi dengan Airflow. Salah satu cara untuk menandakan bahwa DAG berhasil dijalankan adalah dengan menulis ke file dalam folder Cloud Storage, lalu memeriksa konten dalam kasus pengujian integrasi Anda sendiri.

Bagaimana cara berkolaborasi secara efisien dengan kontributor DAG lainnya?

Setiap kontributor dapat memiliki subdirektori di folder data/ untuk pengembangan.

DAG yang ditambahkan ke folder data/ tidak diambil secara otomatis oleh penjadwal Airflow atau server web

Kontributor DAG dapat membuat operasi DAG manual menggunakan perintah gcloud composer environments run dan sub-perintah test dengan flag --subdir untuk menentukan direktori pengembangan kontributor.

Contoh:

Aliran Udara 2

gcloud composer environments run test-environment-name \
  tasks test -- dag-id task-id execution-date \
  --subdir /home/airflow/gcs/data/alice_dev

Aliran Udara 1

gcloud composer environments run test-environment-name \
  test -- dag-id task-id execution-date \
  --subdir /home/airflow/gcs/data/alice_dev

Bagaimana cara memastikan lingkungan deployment dan lingkungan production tetap sinkron?

Untuk mengelola akses:

  • Untuk autentikasi, gunakan akun layanan.

  • Untuk kontrol akses, gunakan peran dan izin Identity and Access Management dan Cloud Composer.

Untuk melakukan deployment dari pengembangan ke produksi:

  • Pastikan konfigurasi yang konsisten, seperti variabel lingkungan dan paket PyPI.

  • Memastikan argumen DAG yang konsisten. Untuk menghindari hard code, sebaiknya gunakan makro dan variabel Airflow.

    Contoh:

    Aliran Udara 2

    gcloud composer environments run test-environment-name \
      variables set -- DATA_ENDPOINT_KEY DATA_ENDPOINT_VALUE
    

    Aliran Udara 1

    gcloud composer environments run test-environment-name \
      variables -- --set DATA_ENDPOINT_KEY DATA_ENDPOINT_VALUE
    

Langkah selanjutnya