# Git और CI से DAGs Deploy करना — Apache Airflow: Data Pipelines का Orchestration

Source: https://www.geekswithgeeks.com/hi/airflow/scale-deploy-ci

> DAGs को Git में रखें, CI में परखें और environment में sync करें।

## DAGs कोड हैं

DAGs को application कोड की तरह देखें: उन्हें **Git** repository में रखें, बदलावों की pull requests से समीक्षा करें, और files हाथ से कॉपी करने की जगह pipeline से deploy करें। आम patterns हैं **git-sync** (sidecar जो repository को DAGs folder में खींचता है), DAGs को container image में बाँधना, या managed services पर object storage में sync करना। CI में कम से कम linting और **import tests** चलाएँ: हर DAG फ़ाइल `DagBag` से लोड करें और किसी फ़ाइल में import errors हों तो build विफल करें। Airflow और provider versions pin करें, और upgrades पहले staging में परखें।

## DAG import test

CI में `pytest` से चलाएँ। यह scheduler के देखने से पहले syntax errors, ग़लत imports और cycles पकड़ता है। `dags/` folder का path आपका अपना है।

```python
from airflow.models import DagBag

def test_no_import_errors():
    bag = DagBag(dag_folder="dags/", include_examples=False)
    assert not bag.import_errors, bag.import_errors

def test_dags_have_owner_and_tags():
    bag = DagBag(dag_folder="dags/", include_examples=False)
    for dag_id, dag in bag.dags.items():
        assert dag.tags, f"{dag_id} has no tags"
```

## DAG को स्थानीय रूप से शुरू से अंत तक परखें

`airflow dags test <dag_id> <date>` scheduler के बिना एक process में DAG को एक बार चलाता है, जो deploy से पहले तर्क debug करने का तेज़ तरीक़ा है।

**Quiz:** DagBag import test क्या पकड़ता है?

- [x] DAG files में syntax errors, ग़लत imports और cycles
- [ ] Network outages
- [ ] Warehouse में धीमी queries
- [ ] ग़लत व्यावसायिक तर्क अपने आप

*Answer:* DAG files में syntax errors, ग़लत imports और cycles. यह DAG files को वैसे लोड करता है जैसे scheduler करता और जो parse न हो उसे बताता है।
