3.9 KiB
3.9 KiB
🧪 Panduan Validasi & Pengujian: MERICA Pipeline Bundles
Repositori:
merica-pipeline-bundles.git
Status: Production Ready (4 Canonical Pipelines & 8 dbt Models)
Integrasi: Apache Airflow 3 NativeGitDagBundle(Interval: 30s)
Kebijakan: Zero-Dummy Policy
📌 1. Gambaran Umum Pengujian Asset Pipeline
Repositori ini menyimpan logika analitik data lakehouse yang dipantau secara langsung oleh Airflow 3 DAG Processor. Sebelum aset pipeline di-merge atau di-push ke branch produksi (development / main), seluruh aset wajib melewati validasi:
- Validasi Sintaksis YAML: Menjamin tidak ada kesalahan indentasi atau parsing pada file konfigurasi pipeline.
- Validasi Kontrak Aturan Great Expectations: Memastikan deklarasi
rules:danqueries:valid dan memiliki parameter wajib. - Validasi Sintaksis Model dbt SQL: Memastikan model transformasi Silver dan Gold memiliki struktur query yang kompatibel.
- Zero-Dummy Compliance Check: Memastikan tidak ada berkas eksperimen atau dummy pipeline yang tersimpan di
configs/ataumetadata/.
⚡ 2. Perintah Validasi Lokal
Jalankan perintah berikut di root repositori merica-pipeline-bundles/:
A. Validasi Seluruh Konfigurasi YAML
python3 -c "
import glob, yaml, sys
files = sorted(glob.glob('configs/*.yaml'))
print(f'Memvalidasi {len(files)} berkas konfigurasi...')
for f in files:
try:
data = yaml.safe_load(open(f))
pid = data.get('pipeline_id', 'UNKNOWN')
print(f' ✓ {f} -> Pipeline ID: {pid} (VALID)')
except Exception as e:
print(f' ✗ ERROR pada {f}: {e}', file=sys.stderr)
sys.exit(1)
print('Seluruh konfigurasi YAML valid 100%!')
"
B. Validasi Keberadaan 4 Pipeline Produksi Kanonikal
python3 -c "
import glob, yaml, sys
expected = {
'example_permits_medallion_dbt_postgres',
'ingestion_db_environmental_permits_cdc',
'ingestion_gws_waste_reports',
'ingestion_api_spku_air_quality'
}
actual = {yaml.safe_load(open(f)).get('pipeline_id') for f in glob.glob('configs/*.yaml')}
diff = actual - expected
if diff:
print(f'PERINGATAN: Ditemukan pipeline non-standar: {diff}', file=sys.stderr)
sys.exit(1)
missing = expected - actual
if missing:
print(f'PERINGATAN: Pipeline kanonikal hilang: {missing}', file=sys.stderr)
sys.exit(1)
print(f'Audit Zero-Dummy Sukses: Tepat 4 pipeline kanonikal terdaftar ({len(actual)}/4).')
"
C. Validasi Model dbt SQL
# Periksa keberadaan 4 model Silver dan 4 model Gold
ls -la dbt/models/silver/*.sql
ls -la dbt/models/gold/*.sql
🛡️ 3. Kebijakan Zero-Dummy Pipeline
Repositori produksi ini diaudit ketat terhadap aturan Zero-Dummy Policy:
- Dilarang menempatkan file konfigurasi dengan prefix
test_atau penamaan ad-hoc sepertipipeline_2507ataupipeline_4984. - Seluruh pipeline harus memiliki identitas semantik yang mencerminkan fungsi bisnis DLH:
example_permits_medallion_dbt_postgres.yamlingestion_db_environmental_permits_cdc.yamlingestion_gws_waste_reports.yamlingestion_api_spku_air_quality.yaml
🔄 4. Verifikasi End-to-End dengan Airflow 3 GitDagBundle
Saat perubahan di-push ke remote Git:
- Airflow 3 DAG Processor akan menarik pembaruan dalam interval maksimal 30 detik.
- Buka dashboard Airflow di
http://<airflow-host>:8088. - Pastikan DAG baru muncul di daftar DAGs dengan bundle tag
dlh-pipeline-bundle. - Periksa log DAG Processor untuk memastikan tidak ada pesan Import Error:
docker compose logs --tail=50 airflow-dag-processor | grep -i "error"