Merged PR 4779: Add run step to CI PR
# Description Adds a run step in PR CI to make it build the models the PR is modifying. Related work items: #28629
This commit is contained in:
commit
12e0f55b08
2 changed files with 57 additions and 17 deletions
|
|
@ -11,18 +11,18 @@ steps:
|
||||||
- script: |
|
- script: |
|
||||||
cp ~/dbt-ci/.env .
|
cp ~/dbt-ci/.env .
|
||||||
|
|
||||||
# Check if it matches the refs/pull/<PR_ID>/merge pattern
|
|
||||||
if [[ $BUILD_SOURCEBRANCH =~ ^refs/pull/([0-9]+)/merge$ ]]; then
|
if [[ $BUILD_SOURCEBRANCH =~ ^refs/pull/([0-9]+)/merge$ ]]; then
|
||||||
POSTGRES_DATABASE="ci_pr_${BASH_REMATCH[1]}"
|
CI_SCHEMA_NAME="ci_pr_${BASH_REMATCH[1]}"
|
||||||
else
|
else
|
||||||
POSTGRES_DATABASE="ci_${BUILD_SOURCEBRANCH#refs/heads/}"
|
echo "Not running in a PR. Exiting"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "POSTGRES_DATABASE: $POSTGRES_DATABASE"
|
echo "CI_SCHEMA_NAME: $CI_SCHEMA_NAME"
|
||||||
|
|
||||||
echo "POSTGRES_DATABASE=${POSTGRES_DATABASE}" >> .env
|
echo "CI_SCHEMA_NAME=$CI_SCHEMA_NAME" >> .env
|
||||||
set -a && source .env && set +a
|
set -a && source .env && set +a
|
||||||
displayName: 'Load env'
|
displayName: 'Prepare env vars'
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -a && source .env && set +a
|
set -a && source .env && set +a
|
||||||
|
|
@ -30,12 +30,6 @@ steps:
|
||||||
psql -h $POSTGRES_HOST -U $POSTGRES_USER -d postgres -c "SELECT 1 FROM pg_database WHERE datname = 'postgres';"
|
psql -h $POSTGRES_HOST -U $POSTGRES_USER -d postgres -c "SELECT 1 FROM pg_database WHERE datname = 'postgres';"
|
||||||
displayName: 'Smoke test Postgres connection'
|
displayName: 'Smoke test Postgres connection'
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -a && source .env && set +a
|
|
||||||
|
|
||||||
psql -h $POSTGRES_HOST -U $POSTGRES_USER -d postgres -c "CREATE DATABASE ${POSTGRES_DATABASE}"
|
|
||||||
displayName: 'Create branch dedicated database'
|
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
cd ~/dbt-ci
|
cd ~/dbt-ci
|
||||||
/bin/bash build-master-artifacts.sh
|
/bin/bash build-master-artifacts.sh
|
||||||
|
|
@ -58,6 +52,7 @@ steps:
|
||||||
- script: |
|
- script: |
|
||||||
source venv/bin/activate
|
source venv/bin/activate
|
||||||
set -a && source .env && set +a
|
set -a && source .env && set +a
|
||||||
|
export IS_CI_EXECUTION=1
|
||||||
|
|
||||||
dbt docs generate --no-compile --empty-catalog --select "state:modified" --state ~/dbt-ci/master-artifacts/
|
dbt docs generate --no-compile --empty-catalog --select "state:modified" --state ~/dbt-ci/master-artifacts/
|
||||||
|
|
||||||
|
|
@ -66,6 +61,7 @@ steps:
|
||||||
- script: |
|
- script: |
|
||||||
source venv/bin/activate
|
source venv/bin/activate
|
||||||
set -a && source .env && set +a
|
set -a && source .env && set +a
|
||||||
|
export IS_CI_EXECUTION=1
|
||||||
|
|
||||||
dbt compile --debug --select "state:modified" --state ~/dbt-ci/master-artifacts/
|
dbt compile --debug --select "state:modified" --state ~/dbt-ci/master-artifacts/
|
||||||
displayName: 'Run dbt compile'
|
displayName: 'Run dbt compile'
|
||||||
|
|
@ -81,7 +77,49 @@ steps:
|
||||||
- script: |
|
- script: |
|
||||||
set -a && source .env && set +a
|
set -a && source .env && set +a
|
||||||
|
|
||||||
psql -h $POSTGRES_HOST -U $POSTGRES_USER -d postgres -c "DROP DATABASE ${POSTGRES_DATABASE}"
|
psql -h $POSTGRES_HOST -U $POSTGRES_USER -d prd-pointer -c "DROP SCHEMA IF EXISTS $CI_SCHEMA_NAME CASCADE;"
|
||||||
|
|
||||||
|
displayName: "Preemptive DROP SCHEMA"
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
source venv/bin/activate
|
||||||
|
set -a && source .env && set +a
|
||||||
|
export IS_CI_EXECUTION=1
|
||||||
|
|
||||||
|
dbt run --select "state:modified" --state ~/dbt-ci/master-artifacts/ --defer
|
||||||
|
|
||||||
|
displayName: 'Run modified models'
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
source venv/bin/activate
|
||||||
|
set -a && source .env && set +a
|
||||||
|
export IS_CI_EXECUTION=1
|
||||||
|
|
||||||
|
dbt test --select "state:modified" --state ~/dbt-ci/master-artifacts/ --defer
|
||||||
|
|
||||||
|
displayName: 'Test modified models'
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
source venv/bin/activate
|
||||||
|
set -a && source .env && set +a
|
||||||
|
export IS_CI_EXECUTION=1
|
||||||
|
|
||||||
|
dbt run --select "state:modified+1" --exclude "state:modified" --state ~/dbt-ci/master-artifacts/ --defer
|
||||||
|
|
||||||
|
displayName: 'Run direct dependants of modified models'
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
source venv/bin/activate
|
||||||
|
set -a && source .env && set +a
|
||||||
|
export IS_CI_EXECUTION=1
|
||||||
|
|
||||||
|
dbt test --select "state:modified+1" --exclude "state:modified" --state ~/dbt-ci/master-artifacts/ --defer
|
||||||
|
|
||||||
|
displayName: 'Test direct dependants of modified models'
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -a && source .env && set +a
|
||||||
|
psql -h $POSTGRES_HOST -U $POSTGRES_USER -d prd-pointer -c "DROP SCHEMA IF EXISTS $CI_SCHEMA_NAME CASCADE;"
|
||||||
|
|
||||||
condition: always()
|
condition: always()
|
||||||
displayName: 'Delete branch dedicated database'
|
displayName: 'Delete PR schema'
|
||||||
|
|
||||||
|
|
@ -9,10 +9,12 @@ To understand better, check:
|
||||||
{% macro generate_schema_name(custom_schema_name, node) -%}
|
{% macro generate_schema_name(custom_schema_name, node) -%}
|
||||||
|
|
||||||
{%- set default_schema = target.schema -%}
|
{%- set default_schema = target.schema -%}
|
||||||
{%- if custom_schema_name is none -%} {{ default_schema }}
|
{%- set is_ci_execution = env_var("IS_CI_EXECUTION", "0") | int -%}
|
||||||
|
{%- set ci_schema_name = env_var("CI_SCHEMA_NAME", "ci_default") -%}
|
||||||
|
|
||||||
|
{%- if is_ci_execution == 1 -%} {{ ci_schema_name }}
|
||||||
|
{%- elif custom_schema_name is none -%} {{ default_schema }}
|
||||||
{%- else -%} {{ custom_schema_name | trim }}
|
{%- else -%} {{ custom_schema_name | trim }}
|
||||||
|
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
|
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue