Point terminology meta configs to docs instead of GitHub #589
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: tuva_internal_dbt_v1.8.6 | |
on: | |
pull_request: | |
branches: | |
- main | |
- 'minor-release*' | |
- 'release*' | |
workflow_dispatch: # for manual triggering | |
concurrency: | |
# Ensure only one instance of this workflow runs across all PRs to prevent database conflicts | |
group: ci-testing | |
# Don't cancel in-progress runs automatically | |
cancel-in-progress: false | |
env: | |
PYTHON_VERSION: '3.9' | |
LINT_SCRIPT_PATH: ./lint_tuva_project.sh | |
####### Secrets ####### | |
####### BigQuery | |
TUVA_BIGQUERY_TOKEN: ${{ secrets.TUVA_BIGQUERY_TOKEN }} | |
TUVA_BIGQUERY_PROJECT: ${{ secrets.TUVA_BIGQUERY_PROJECT }} | |
####### Fabric | |
DBT_FABRIC_CI_HOST: ${{ secrets.DBT_FABRIC_CI_HOST }} | |
DBT_FABRIC_SERVICE_PRINCIPAL_ID: ${{ secrets.DBT_FABRIC_SERVICE_PRINCIPAL_ID }} | |
DBT_FABRIC_SERVICE_PRINCIPAL_SECRET: ${{ secrets.DBT_FABRIC_SERVICE_PRINCIPAL_SECRET }} | |
DBT_FABRIC_TENANT_ID: ${{ secrets.DBT_FABRIC_TENANT_ID }} | |
DBT_FABRIC_CI_DATABASE: ${{ secrets.DBT_FABRIC_CI_DATABASE }} | |
DBT_FABRIC_CI_SCHEMA: ${{ secrets.DBT_FABRIC_CI_SCHEMA }} | |
####### Redshift | |
DBT_REDSHIFT_CI_HOST: ${{ secrets.DBT_REDSHIFT_CI_HOST }} | |
DBT_REDSHIFT_CI_USER: ${{ secrets.DBT_REDSHIFT_CI_USER }} | |
DBT_REDSHIFT_CI_PASSWORD: ${{ secrets.DBT_REDSHIFT_CI_PASSWORD }} | |
####### Snowflake | |
DBT_TUVA_SNOWFLAKE_ACCOUNT: ${{ secrets.DBT_TUVA_SNOWFLAKE_ACCOUNT }} | |
DBT_TUVA_CI_DATABASE: ${{ secrets.DBT_TUVA_CI_DATABASE }} | |
DBT_SNOWFLAKE_CI_PASSWORD: ${{ secrets.DBT_SNOWFLAKE_CI_PASSWORD }} | |
DBT_SNOWFLAKE_CI_ROLE: ${{ secrets.DBT_SNOWFLAKE_CI_ROLE }} | |
DBT_SNOWFLAKE_CI_SCHEMA: ${{ secrets.DBT_SNOWFLAKE_CI_SCHEMA }} | |
DBT_SNOWFLAKE_CI_USER: ${{ secrets.DBT_SNOWFLAKE_CI_USER }} | |
DBT_SNOWFLAKE_CI_WAREHOUSE: ${{ secrets.DBT_SNOWFLAKE_CI_WAREHOUSE }} | |
# Permissions needed for the comment action | |
permissions: | |
contents: read | |
pull-requests: write | |
jobs: | |
# ============================================================================ | |
# Linting Job (Runs First) | |
# ============================================================================ | |
sqlfluff-lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ env.PYTHON_VERSION }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install Dependencies | |
run: | | |
python -m pip install --upgrade pip | |
# Install dbt adapter needed for compile/lint (using Snowflake here) | |
# Also install sqlfluff | |
pip install dbt-core==1.8.6 dbt-snowflake sqlfluff==3.3.1 sqlfluff-templater-dbt | |
# --- Setup dbt Profile for Linting --- | |
- name: Create dbt profiles directory | |
run: mkdir -p ~/.dbt | |
- name: Create dbt profiles.yml for Snowflake (for linting context) | |
run: | | |
echo "default: | |
outputs: | |
dev: | |
account: \"{{ env_var('DBT_TUVA_SNOWFLAKE_ACCOUNT') }}\" | |
database: dev_ci_testing | |
password: \"{{ env_var('DBT_SNOWFLAKE_CI_PASSWORD') }}\" | |
role: \"{{ env_var('DBT_SNOWFLAKE_CI_ROLE') }}\" | |
schema: \"{{ env_var('DBT_SNOWFLAKE_CI_SCHEMA') }}\" | |
threads: 8 | |
type: snowflake | |
user: \"{{ env_var('DBT_SNOWFLAKE_CI_USER') }}\" | |
warehouse: \"{{ env_var('DBT_SNOWFLAKE_CI_WAREHOUSE') }}\" | |
target: dev" > ~/.dbt/profiles.yml | |
- name: Check if lint script exists | |
run: | | |
if [ ! -f "${{ env.LINT_SCRIPT_PATH }}" ]; then | |
echo "Error: Lint script not found at ${{ env.LINT_SCRIPT_PATH }}" | |
exit 1 | |
fi | |
- name: Make lint script executable | |
run: chmod +x ${{ env.LINT_SCRIPT_PATH }} | |
- name: Run SQLFluff Lint Check Script | |
id: lint_script | |
run: bash ${{ env.LINT_SCRIPT_PATH }} --ci | |
# --- Failure Handling --- | |
# Intermediate step to read file content reliably on failure | |
- name: Read Lint Output File on Failure | |
id: read-lint-output | |
# Run only if the lint_script step failed | |
if: failure() && steps.lint_script.outcome == 'failure' | |
run: | | |
output_file="SQLFLUFF_LINTER_OUTPUT.TXT" # Matches script variable | |
if [ -f "$output_file" ]; then | |
# Read the file content, preserving newlines | |
content=$(cat "$output_file") | |
else | |
content="Lint output file ($output_file) not found." | |
fi | |
content="${content//'%'/'%25'}" | |
EOF_MARKER=$(uuidgen) | |
echo "content<<${EOF_MARKER}" >> $GITHUB_OUTPUT | |
echo "$content" >> $GITHUB_OUTPUT | |
echo "${EOF_MARKER}" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Create Comment on PR Failure | |
# Run only if lint_script failed and it's a pull request event | |
if: failure() && steps.lint_script.outcome == 'failure' && github.event_name == 'pull_request' | |
uses: peter-evans/create-or-update-comment@v4 | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
body: | | |
❌ **SQLFluff Linting Failed** | |
Issues were found that require manual correction or are unfixable by `sqlfluff fix`. | |
Please review the output below (or the full logs), fix the issues locally, and commit the changes. | |
```text | |
${{ steps.read-lint-output.outputs.content }} | |
``` | |
# ============================================================================ | |
# Build Jobs (Run only if Linting Passes) | |
# ============================================================================ | |
####### BigQuery | |
bigquery_clinical_and_claims_enabled: | |
needs: sqlfluff-lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install dbt-core and BigQuery adapter | |
run: | | |
python -m pip install --upgrade pip | |
pip install dbt-core==1.8.6 dbt-bigquery | |
- name: Create dbt profiles.yml for BigQuery | |
run: | | |
mkdir -p ./profiles/bigquery | |
echo "default: | |
outputs: | |
dev: | |
type: bigquery | |
method: service-account | |
project: dev-ci-testing | |
keyfile: ./creds.json | |
dataset: connector | |
threads: 8 | |
timeout_seconds: 300 | |
priority: interactive | |
target: dev" > ./profiles/bigquery/profiles.yml | |
working-directory: ci_testing | |
- name: Create BigQuery credentials file | |
run: | | |
echo "${{ secrets.TUVA_BIGQUERY_TOKEN }}" | base64 --decode > ./creds.json | |
working-directory: ci_testing | |
- name: dbt-deps | |
run: dbt deps --profiles-dir ./profiles/bigquery | |
working-directory: ci_testing | |
- name: dbt-debug | |
run: dbt debug --profiles-dir ./profiles/bigquery | |
working-directory: ci_testing | |
- name: dbt-build | |
run: | | |
dbt build --full-refresh --profiles-dir ./profiles/bigquery --vars '{"use_synthetic_data": true,"clinical_enabled": true,"claims_enabled": true,"provider_attribution_enabled":true,"fhir_preprocessing_enabled":true}' | |
working-directory: ci_testing | |
- name: Get the result | |
if: ${{ always() }} | |
run: echo "${{ steps.dbt-build.outputs.result }}" | |
shell: bash | |
####### Fabric | |
fabric_clinical_and_claims_enabled: | |
needs: sqlfluff-lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install ODBC Driver 18 for SQL Server | |
run: | | |
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - | |
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list | |
sudo apt-get update | |
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 | |
- name: Install dbt-core and Fabric adapter | |
run: | | |
python -m pip install --upgrade pip | |
pip install dbt-core==1.8.6 dbt-fabric | |
- name: dbt-deps | |
run: dbt deps --profiles-dir ./profiles/fabric | |
working-directory: ci_testing | |
- name: dbt-debug | |
run: dbt debug --profiles-dir ./profiles/fabric | |
working-directory: ci_testing | |
- name: dbt-build | |
run: | | |
dbt build --full-refresh --profiles-dir ./profiles/fabric --vars '{"use_synthetic_data": true,"clinical_enabled":true,"claims_enabled":true,"provider_attribution_enabled":true,"fhir_preprocessing_enabled":true}' | |
working-directory: ci_testing | |
- name: Get the result | |
if: ${{ always() }} | |
run: echo "${{ steps.dbt-build.outputs.result }}" | |
shell: bash | |
####### Redshift | |
redshift_clinical_and_claims_enabled: | |
needs: sqlfluff-lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install dbt-core and Redshift adapter | |
run: | | |
python -m pip install --upgrade pip | |
pip install dbt-core==1.8.6 dbt-redshift | |
- name: dbt-deps | |
run: dbt deps --profiles-dir ./profiles/redshift | |
working-directory: ci_testing | |
- name: dbt-debug | |
run: dbt debug --profiles-dir ./profiles/redshift | |
working-directory: ci_testing | |
- name: dbt-build | |
run: | | |
dbt build --full-refresh --profiles-dir ./profiles/redshift --vars '{"use_synthetic_data": true,"clinical_enabled": true,"claims_enabled": true,"provider_attribution_enabled":true,"fhir_preprocessing_enabled":true}' | |
working-directory: ci_testing | |
- name: Get the result | |
if: ${{ always() }} | |
run: echo "${{ steps.dbt-build.outputs.result }}" | |
shell: bash | |
####### Snowflake | |
snowflake_clinical_and_claims_enabled: | |
needs: sqlfluff-lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install dbt-core and Snowflake adapter | |
run: | | |
python -m pip install --upgrade pip | |
pip install dbt-core==1.8.6 dbt-snowflake | |
- name: dbt-deps | |
run: dbt deps --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
- name: dbt-debug | |
run: dbt debug --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
- name: dbt-build | |
run: | | |
dbt build --full-refresh --profiles-dir ./profiles/snowflake --vars '{"use_synthetic_data": true,"clinical_enabled":true,"claims_enabled":true,"fhir_preprocessing_enabled":true}' | |
working-directory: ci_testing | |
- name: Get the result | |
if: ${{ always() }} | |
run: echo "${{ steps.dbt-build.outputs.result }}" | |
shell: bash | |
snowflake_claims_enabled: | |
runs-on: ubuntu-latest | |
needs: snowflake_clinical_and_claims_enabled | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install dbt-core and Snowflake adapter | |
run: | | |
python -m pip install --upgrade pip | |
pip install dbt-core==1.8.6 dbt-snowflake | |
- name: dbt-deps | |
run: dbt deps --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
- name: dbt-debug | |
run: dbt debug --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
# Changed to compile to save processing time | |
- name: dbt-compile | |
run: | | |
dbt compile --profiles-dir ./profiles/snowflake --vars '{"use_synthetic_data": true,"claims_enabled":true}' | |
working-directory: ci_testing | |
- name: Get the result | |
if: ${{ always() }} | |
run: echo "${{ steps.dbt-build.outputs.result }}" | |
shell: bash | |
snowflake_claims_prov_attribution_enabled: | |
runs-on: ubuntu-latest | |
needs: snowflake_claims_enabled | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- name: Install dbt-core and Snowflake adapter | |
run: | | |
python -m pip install --upgrade pip | |
pip install dbt-core==1.8.6 dbt-snowflake | |
- name: dbt-deps | |
run: dbt deps --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
- name: dbt-debug | |
run: dbt debug --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
# Changed to compile to save processing time | |
- name: dbt-compile | |
run: | | |
dbt compile --profiles-dir ./profiles/snowflake --vars '{"use_synthetic_data": true,"claims_enabled":true,"provider_attribution_enabled":true}' | |
working-directory: ci_testing | |
- name: Get the result | |
if: ${{ always() }} | |
run: echo "${{ steps.dbt-build.outputs.result }}" | |
shell: bash | |
snowflake_clinical_enabled: | |
runs-on: ubuntu-latest | |
needs: snowflake_claims_prov_attribution_enabled | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- name: Install dbt-core and Snowflake adapter | |
run: | | |
python -m pip install --upgrade pip | |
pip install dbt-core==1.8.6 dbt-snowflake | |
- name: dbt-deps | |
run: dbt deps --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
- name: dbt-debug | |
run: dbt debug --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
# Changed to compile to save processing time | |
- name: dbt-compile | |
run: | | |
dbt build --full-refresh --profiles-dir ./profiles/snowflake --vars '{"use_synthetic_data": true,"clinical_enabled":true}' | |
working-directory: ci_testing | |
- name: Get the result | |
if: ${{ always() }} | |
run: echo "${{ steps.dbt-build.outputs.result }}" | |
shell: bash | |
snowflake_prov_attribution_enabled: | |
runs-on: ubuntu-latest | |
needs: snowflake_clinical_enabled | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install dbt-core and Snowflake adapter | |
run: | | |
python -m pip install --upgrade pip | |
pip install dbt-core==1.8.6 dbt-snowflake | |
- name: dbt-deps | |
run: dbt deps --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
- name: dbt-debug | |
run: dbt debug --profiles-dir ./profiles/snowflake | |
working-directory: ci_testing | |
# Changed to compile to save processing time | |
- name: dbt-compile | |
run: | | |
dbt compile --profiles-dir ./profiles/snowflake --vars '{"use_synthetic_data": true,"provider_attribution_enabled":true}' | |
working-directory: ci_testing | |
- name: Get the result | |
if: ${{ always() }} | |
run: echo "${{ steps.dbt-build.outputs.result }}" | |
shell: bash |