A simple way to Validate your Airflow DAGs on Pull Request
DagBag にロードしてみてエラーを確認するシンプルな仕組みのよう。
DagBag
airflow.models.dagbag - Airflow Documentation
test/dag_validation.py
import os
import unittest
from airflow.models import DagBag
class TestDags(unittest.TestCase):
def setUp(self):
DAGS_DIR = os.getenv('INPUT_DAGPATHS', 'dags_')
self.dagbag = DagBag(dag_folder = DAGS_DIR, include_examples = False)
def test_import_dags(self):
self.assertFalse(
len(self.dagbag.import_errors),
f"DAG import failures. Errors: {self.dagbag.import_errors}"
)
suite = unittest.TestLoader().loadTestsFromTestCase(TestDags)
requirements.txt
pytest
apache-airflow
$ pip install -r test/requirements.txt
$ INPUT_DAGPATHS=dags pytest test/dag_validation.py -s -q
.github/workflows/validate.yml
name: dags_validate
on:
push:
workflow_dispatch:
permissions:
contents: 'read'
id-token: 'write'
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.10'
cache: pip
- name: install pip packages
run: |
pip install -r test/requirements.txt
- name: "validate dags"
run: INPUT_DAGPATHS=dags_ pytest test/dag_validation.py -s -q