trigger: none # Because we trigger this only in PRs, no need to have triggers here pool: name: ci-pool-prd steps: - script: | echo "Running on branch: ${BUILD_SOURCEBRANCH#refs/heads/}" displayName: 'Print branch' - script: | cp ~/dbt-ci/.env . # Check if it matches the refs/pull//merge pattern # if [[ $BUILD_SOURCEBRANCH =~ ^refs/pull/([0-9]+)/merge$ ]]; then # POSTGRES_DATABASE="ci_pr_${BASH_REMATCH[1]}" # else # POSTGRES_DATABASE="ci_${BUILD_SOURCEBRANCH#refs/heads/}" # fi echo "POSTGRES_DATABASE: $POSTGRES_DATABASE" echo "POSTGRES_DATABASE=prd-pointer" >> .env set -a && source .env && set +a displayName: 'Load env' - script: | set -a && source .env && set +a psql -h $POSTGRES_HOST -U $POSTGRES_USER -d postgres -c "SELECT 1 FROM pg_database WHERE datname = 'postgres';" displayName: 'Smoke test Postgres connection' - script: | cd ~/dbt-ci /bin/bash build-master-artifacts.sh displayName: 'Build master artifacts' - script: | python3 -m venv venv source venv/bin/activate pip install -r requirements.txt pip install -r ci/ci-requirements.txt displayName: 'Create python virtual environment' - script: | source venv/bin/activate dbt deps displayName: 'Install dbt deps' - script: | source venv/bin/activate set -a && source .env && set +a dbt docs generate --no-compile --empty-catalog --select "state:modified" --state ~/dbt-ci/master-artifacts/ displayName: 'Run dbt docs' - script: | source venv/bin/activate set -a && source .env && set +a dbt compile --debug --select "state:modified" --state ~/dbt-ci/master-artifacts/ displayName: 'Run dbt compile' - script: | source venv/bin/activate cd ci /bin/bash sqlfluff-check.sh ../target/compiled displayName: 'Validate models compiled SQL' - script: | set -a && source .env && set +a psql -h $POSTGRES_HOST -U $POSTGRES_USER -d prd-pointer -c "DROP SCHEMA IF EXISTS HARDCODED_SCHEMA CASCADE;" displayName: "Preemptive DROP SCHEMA" - script: | source venv/bin/activate echo "CI_SCHEMA_NAME=HARDCODED_SCHEMA" >> .env set -a && source .env && set +a dbt run --select "state:modified" --state ~/dbt-ci/master-artifacts/ --defer displayName: 'Run modified models' - script: | source venv/bin/activate echo "CI_SCHEMA_NAME=HARDCODED_SCHEMA" >> .env set -a && source .env && set +a dbt test --select "state:modified" --state ~/dbt-ci/master-artifacts/ --defer displayName: 'Test modified models' - script: | set -a && source .env && set +a psql -h $POSTGRES_HOST -U $POSTGRES_USER -d prd-pointer -c "DROP SCHEMA IF EXISTS HARDCODED_SCHEMA CASCADE;" condition: always() displayName: 'Delete PR schema'