Skip to content

Add Tests and best practices #49

Add Tests and best practices

Add Tests and best practices #49

# orchestrate-workflow.yml
name: 🎯 Orchestrate Airflow Validations
on: # yamllint disable-line rule:truthy
pull_request:
paths:
- orchestrate/*
- orchestrate/**/*
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# This cancels a run if another change is pushed to the same branch
concurrency:
group: orchestrate-${{ github.ref }}
cancel-in-progress: true
jobs:
airflow:
name: Pull Request Airflow Tests
runs-on: ubuntu-latest
# container: datacoves/ci-airflow-dbt-snowflake:3.2
container: datacoves/ci-airflow-dbt-snowflake:3.3.202411131714-984b44d3
env:
AIRBYTE__EXTRACT_LOCATION: /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}/load
AIRFLOW__CORE__DAGS_FOLDER: /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}/orchestrate/dags
AIRFLOW__CORE__DAGBAG_IMPORT_TIMEOUT: 300
AIRFLOW__ARTIFACTS_PATH: /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}/orchestrate
DBT_PROFILES_DIR: /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}/automate/dbt
DATACOVES__DBT_HOME: /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}/transform
DATACOVES__REPO_PATH: /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}
PYTHONPATH: /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}
FORCE_COLOR: 1
steps:
- name: Checkout branch
uses: actions/[email protected]
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Test DAG structure integrity (DagBag Loading)
run: "python /usr/app/load_dagbag.py"
- name: Test DBT Sources against DAGs' YAML files
run: "python /usr/app/test_dags.py --dag-loadtime-threshold 1 --check-variable-usage"
# - name: Custom Airflow Testss
# run: "pytest $AIRFLOW__ARTIFACTS_PATH/test_dags/validate_dags.py"
- name: Custom Airflow Tests
uses: ./.github/actions/pytest-with-warnings
id: airflow_tests # Add this id to reference the output
with:
pytest_args: "$AIRFLOW__ARTIFACTS_PATH/test_dags/validate_dags.py"
# Optional: Add this step if you want warnings to make the check show as neutral (yellow) instead of success
- name: Check for warnings
if: steps.airflow_tests.outputs.warning == 'true'
uses: actions/github-script@v7
with:
script: |
core.setNeutral('Warnings detected in tests')