Data Pipeline CI/CD & GitOps Şablonları
Data Pipeline CI/CD & GitOps Şablonları
Veri modellerini test eden, otomatik derleyen ve sıfır kesintiyle dağıtan (Zero-Downtime) üretime hazır CI/CD reçeteleri.
dbtdbt + GitHub Actions + BigQuery/Snowflake
GitHub Actions ile Otomatik dbt Slim CI & Test Pipeline
Yalnızca değişen (modified+) dbt modellerini ve downstream testlerini izole bir PR şemasında çalıştıran yüksek hızlı Slim CI hattı.
name: dbt Slim CI Pipeline
on:
pull_request:
branches: [main]
paths:
- 'models/**'
- 'dbt_project.yml'
jobs:
dbt_ci:
runs-on: ubuntu-latest
steps:
- name: Checkout PR Code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dbt
run: pip install dbt-snowflake dbt-bigquery
- name: Download Production Manifest
run: |
aws s3 cp s3://my-dbt-state/manifest.json ./state/manifest.json
- name: Run dbt Slim CI (Modified Models Only)
env:
DBT_SCHEMA: "pr_${{ github.event.number }}"
run: |
dbt deps
dbt build --select state:modified+ --defer --state ./stateSağlanan Avantajlar:
%80 daha az ambar maliyeti (Slim CI deferral)
Sıfır bozuk SQL ile main branch garantisi
Geçici PR şeması otomatik temizliği
orchestrationAirflow + Pytest
Apache Airflow DAG Bütünlüğü ve Döngü (Cycle) Pytest Otomasyonu
Üretime çıkmadan önce tüm DAG dosyalarını sözdizimi, döngüsel bağımlılık (cycles) ve zorunlu etiketler (tags) açısından denetleyen test paketi.
import pytest
from airflow.models import DagBag
@pytest.fixture(scope="session")
def dag_bag():
return DagBag(dag_folder="dags/", include_examples=False)
def test_no_import_errors(dag_bag):
"""Ensure zero DAG syntax or import errors."""
assert len(dag_bag.import_errors) == 0, f"DAG import failures: {dag_bag.import_errors}"
def test_dag_retries_and_tags(dag_bag):
"""Ensure every production DAG has retries and owner tags."""
for dag_id, dag in dag_bag.dags.items():
assert dag.tags, f"DAG {dag_id} is missing tags"
assert dag.default_args.get("retries", 0) >= 2, f"DAG {dag_id} must have at least 2 retries"Sağlanan Avantajlar:
Airflow scheduler çökmelerini engeller
Ekipler arası zorunlu tag ve retry standardı getirir
PR aşamasında 5 saniyede sonuç verir