dataiotech Labs
dbaguidedataxtoolsdataopsphereDataOps
dataopsphere
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 ./state
Sağ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