72 lines
3.8 KiB
Plaintext
72 lines
3.8 KiB
Plaintext
# =============================================================================
|
|||
|
|
# eBdesk SiCABE — dependensi top-level image Airflow (strategi S1: satu env)
|
||
|
|
# =============================================================================
|
||
|
|
# File ini adalah SUMBER (input) untuk `uv pip compile`. Jangan tambahkan pin
|
||
|
|
# hasil ke sini — hasilnya ada di requirements.lock.
|
||
|
|
#
|
||
|
|
# Regenerasi lock (lihat juga header deploy/docker/airflow/Dockerfile):
|
||
|
|
# docker run --rm -v "$PWD/deploy/docker/airflow:/w" apache/airflow:3.3.1-python3.11 \
|
||
|
|
# bash -lc 'pip -q install uv && uv pip compile /w/requirements.in --output-file /w/requirements.lock'
|
||
|
|
#
|
||
|
|
# ✅ Extra `[airflow]` WAJIB dipakai sejak OpenMetadata 2.0.2.
|
||
|
|
# Di OM 1.13.x extra itu mem-pin `apache-airflow==3.2.1` sehingga menurunkan
|
||
|
|
# Airflow; di OM 2.0.2 extra yang sama mem-pin `apache-airflow==3.3.1` — sama
|
||
|
|
# persis dengan versi terbaru dan base image kita. Diuji di experiments/om20x.
|
||
|
|
# =============================================================================
|
||
|
|
|
||
|
|
apache-airflow==3.3.1
|
||
|
|
|
||
|
|
# Provider Airflow yang dipakai DAG / konektor
|
||
|
|
apache-airflow-providers-trino
|
||
|
|
apache-airflow-providers-amazon
|
||
|
|
apache-airflow-providers-http
|
||
|
|
# WAJIB: Postgres adalah metadata DB Airflow (postgresql+psycopg2://) — tanpa
|
||
|
|
# driver-nya container gagal start. Base `slim` TIDAK membawanya.
|
||
|
|
apache-airflow-providers-postgres
|
||
|
|
|
||
|
|
# ─── PIN WAJIB: melindungi plugin OpenMetadata dari kerusakan SENYAP ─────────
|
||
|
|
# SQLAlchemy 2.1 mematahkan rantai:
|
||
|
|
# flask_appbuilder -> sqlalchemy_utils -> sqlalchemy.orm.attributes
|
||
|
|
# AttributeError: module 'sqlalchemy.orm.attributes' has no attribute
|
||
|
|
# 'ScalarAttributeImpl'
|
||
|
|
# Akibatnya plugin `openmetadata-managed-apis` GAGAL DIMUAT saat Airflow start
|
||
|
|
# (log hanya berbunyi "Failed to import plugin openmetadata_managed_apis"),
|
||
|
|
# sehingga tombol "Test Connection" dan jalur pipeline service client
|
||
|
|
# (docs/sicabe-install-phases-detail.md §8.11) mati — dengan pesan yang TIDAK
|
||
|
|
# menyebut SQLAlchemy sama sekali.
|
||
|
|
# Lock saat ini memakai 2.0.54 HANYA karena di-resolve ketika 2.1 belum ada;
|
||
|
|
# tanpa pin ini, regenerasi lock berikutnya akan menarik 2.1.x dan mematahkannya.
|
||
|
|
# ⚠️ Berkas constraints RESMI Airflow pun TIDAK mem-pin sqlalchemy — jadi hanya
|
||
|
|
# pin eksplisit inilah yang melindungi.
|
||
|
|
# Ditemukan & dibuktikan di experiments/airflow332 — lihat reviews/sicabe-18.
|
||
|
|
sqlalchemy<2.1
|
||
|
|
|
||
|
|
# Transformasi & data quality
|
||
|
|
# dbt-core<1.12: 1.12.x menarik `dbt-core-experimental-parser` yang sdist-only
|
||
|
|
# (tanpa wheel) sehingga memaksa build dari source. 1.11.x tidak.
|
||
|
|
dbt-core<1.12
|
||
|
|
dbt-trino>=1.8,<2.0
|
||
|
|
great_expectations>=1.0,<2.0
|
||
|
|
|
||
|
|
# Metadata ingestion
|
||
|
|
# WAJIB sama dengan versi server OpenMetadata (deploy/ = 2.0.2).
|
||
|
|
# Extra `[airflow]` membawa plugin-side deps + provider elasticsearch/opensearch.
|
||
|
|
# Extra `[pii-processor]` (presidio + spacy) dibutuhkan agar DAG yang DIBANGKITKAN
|
||
|
|
# plugin OpenMetadata untuk pipeline TestSuite bisa diimpor Airflow: DAG tsb
|
||
|
|
# mengimpor workflow ingestion yang menyentuh presidio_analyzer. Tanpa extra ini
|
||
|
|
# deploy pipeline gagal dengan:
|
||
|
|
# Failed to import dag_file [.../sicabe_dq_gold_native.py]: No module named 'presidio_analyzer'
|
||
|
|
openmetadata-ingestion[airflow,pii-processor]==2.0.2.0
|
||
|
|
|
||
|
|
# Plugin REST API OpenMetadata yang disajikan Airflow di prefix /pluginsv2/.
|
||
|
|
# Inilah yang di-probe server OM (GET /pluginsv2/api/v2/openmetadata/health-auth)
|
||
|
|
# dan yang menghidupkan tombol "Test Connection" di UI — lihat
|
||
|
|
# docs/sicabe-install-phases-detail.md §8.11.
|
||
|
|
openmetadata-managed-apis==2.0.2.0
|
||
|
|
|
||
|
|
# Lineage dbt (bronze→silver→gold) di OpenMetadata.
|
||
|
|
# Extra `[dbt]` dari openmetadata-ingestion memerlukan paket ini untuk membaca
|
||
|
|
# artefak dbt (manifest.json/catalog.json). Tanpa ini, workflow dbt gagal dengan
|
||
|
|
# "No module named 'collate_dbt_artifacts_parser'" dan lineage tidak terbentuk.
|
||
|
|
collate-dbt-artifacts-parser==0.1.4
|