Skip to content

Commit

Permalink
DbtProject support in serverless template
Browse files Browse the repository at this point in the history
  • Loading branch information
alangenfeld committed Apr 8, 2024
1 parent 7c2f65f commit 3292022
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 20 deletions.
37 changes: 27 additions & 10 deletions github/serverless/dbt/branch_deployments.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,25 +33,42 @@ jobs:
with:
dagster_cloud_file: $DAGSTER_CLOUD_FILE

- name: Checkout for Python Executable Deploy
- name: Checkout
if: steps.prerun.outputs.result == 'pex-deploy'
uses: actions/checkout@v3
with:
ref: ${{ github.head_ref }}
path: project-repo

- name: Parse dbt project and package with Dagster project
# Validate dagster_cloud.yaml and the connection to dagster.cloud
- name: Validate configuration
id: ci-validate
if: steps.prerun.outputs.result == 'pex-deploy'
uses: dagster-io/dagster-cloud-action/actions/utils/[email protected]
with:
command: "ci check --project-dir ${{ env.DAGSTER_PROJECT_DIR }} --dagster-cloud-yaml-path ${{ env.DAGSTER_CLOUD_YAML_PATH }}"

# Parse dagster_cloud.yaml, detect if this is branch deployment and initialize the build session
- name: Initialize build session
id: ci-init
if: steps.prerun.outputs.result == 'pex-deploy'
uses: dagster-io/dagster-cloud-action/actions/utils/[email protected]
with:
project_dir: ${{ env.DAGSTER_PROJECT_DIR }}
dagster_cloud_yaml_path: ${{ env.DAGSTER_CLOUD_YAML_PATH }}
# The full deployment name. If this run is for a PR, this value is ignored and a branch
# deployment is used.
deployment: 'prod'

- name: Prepare DBT project for deployment
if: steps.prerun.outputs.result == 'pex-deploy'
# --upgrade-strategy eager picks up newer packages that are required for things to work
run: |
pip install pip --upgrade
cd ${{ env.DBT_PROJECT_DIR }}/${{ env.DAGSTER_PROJECT_NAME }}
pip install . MarkupSafe==2.0.1 'click>8.1.0' 'Jinja2>3.0.0'
pip install pyOpenSSL --upgrade
cd -
rsync -avz --exclude ${{ env.DAGSTER_PROJECT_NAME }} --exclude .git ${{ env.DBT_PROJECT_DIR }}/ ${{ env.DBT_PACKAGE_DATA_DIR }}
dbt deps --project-dir ${{ env.DBT_PACKAGE_DATA_DIR }} --profiles-dir ${{ env.DBT_PACKAGE_DATA_DIR }}
dbt parse --project-dir ${{ env.DBT_PACKAGE_DATA_DIR }} --profiles-dir ${{ env.DBT_PACKAGE_DATA_DIR }}
rm ${{ env.DBT_PACKAGE_DATA_DIR }}/target/partial_parse.msgpack
cd ${{ env.ROOT_DIR }}/${{ env.DAGSTER_PROJECT_NAME }}
pip install . --upgrade --upgrade-strategy eager
dagster-dbt project prepare-for-deployment --file ${{ env.DAGSTER_PROJECT_NAME }}/project.py
# dagster-cloud ci dbt-project manage-state --file ${{ env.DAGSTER_PROJECT_NAME }}/project.py
shell: bash
env:
DAGSTER_PROJECT_NAME: 'dagster_dbt_scaffold'
Expand Down
37 changes: 27 additions & 10 deletions github/serverless/dbt/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,25 +35,42 @@ jobs:
with:
dagster_cloud_file: $DAGSTER_CLOUD_FILE

- name: Checkout for Python Executable Deploy
- name: Checkout
if: steps.prerun.outputs.result == 'pex-deploy'
uses: actions/checkout@v3
with:
ref: ${{ github.head_ref }}
path: project-repo

- name: Parse dbt project and package with Dagster project
# Validate dagster_cloud.yaml and the connection to dagster.cloud
- name: Validate configuration
id: ci-validate
if: steps.prerun.outputs.result == 'pex-deploy'
uses: dagster-io/dagster-cloud-action/actions/utils/[email protected]
with:
command: "ci check --project-dir ${{ env.DAGSTER_PROJECT_DIR }} --dagster-cloud-yaml-path ${{ env.DAGSTER_CLOUD_YAML_PATH }}"

# Parse dagster_cloud.yaml, detect if this is branch deployment and initialize the build session
- name: Initialize build session
id: ci-init
if: steps.prerun.outputs.result == 'pex-deploy'
uses: dagster-io/dagster-cloud-action/actions/utils/[email protected]
with:
project_dir: ${{ env.DAGSTER_PROJECT_DIR }}
dagster_cloud_yaml_path: ${{ env.DAGSTER_CLOUD_YAML_PATH }}
# The full deployment name. If this run is for a PR, this value is ignored and a branch
# deployment is used.
deployment: 'prod'

- name: Prepare DBT project for deployment
if: steps.prerun.outputs.result == 'pex-deploy'
# --upgrade-strategy eager picks up newer packages that are required for things to work
run: |
pip install pip --upgrade
cd ${{ env.DBT_PROJECT_DIR }}/${{ env.DAGSTER_PROJECT_NAME }}
pip install . MarkupSafe==2.0.1 'click>8.1.0' 'Jinja2>3.0.0'
pip install pyOpenSSL --upgrade
cd -
rsync -avz --exclude ${{ env.DAGSTER_PROJECT_NAME }} --exclude .git ${{ env.DBT_PROJECT_DIR }}/ ${{ env.DBT_PACKAGE_DATA_DIR }}
dbt deps --project-dir ${{ env.DBT_PACKAGE_DATA_DIR }} --profiles-dir ${{ env.DBT_PACKAGE_DATA_DIR }}
dbt parse --project-dir ${{ env.DBT_PACKAGE_DATA_DIR }} --profiles-dir ${{ env.DBT_PACKAGE_DATA_DIR }}
rm ${{ env.DBT_PACKAGE_DATA_DIR }}/target/partial_parse.msgpack
cd ${{ env.ROOT_DIR }}/${{ env.DAGSTER_PROJECT_NAME }}
pip install . --upgrade --upgrade-strategy eager
dagster-dbt project prepare-for-deployment --file ${{ env.DAGSTER_PROJECT_NAME }}/project.py
# dagster-cloud ci dbt-project manage-state --file ${{ env.DAGSTER_PROJECT_NAME }}/project.py
shell: bash
env:
DAGSTER_PROJECT_NAME: 'dagster_dbt_scaffold'
Expand Down

0 comments on commit 3292022

Please sign in to comment.