Migrating dbt™ jobs from Github Actions to Paradime Bolt
Overview
Part 1: Understanding Your Current GitHub Actions Setup
Example GitHub Actions Workflow
# .github/workflows/dbt_production.yml
name: dbt Production Run
on:
schedule:
# Run daily at 6 AM UTC
- cron: '0 6 * * *'
workflow_dispatch: # Allow manual triggers
push:
branches:
- main
jobs:
dbt_run:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dbt
run: |
pip install dbt-core dbt-snowflake==1.7.0
- name: Install dependencies
run: |
dbt deps
env:
DBT_PROFILES_DIR: .
- name: Run dbt seed
run: dbt seed --target prod
env:
DBT_SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
DBT_SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }}
DBT_SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}
DBT_SNOWFLAKE_ROLE: ${{ secrets.SNOWFLAKE_ROLE }}
DBT_SNOWFLAKE_WAREHOUSE: ${{ secrets.SNOWFLAKE_WAREHOUSE }}
DBT_SNOWFLAKE_DATABASE: ${{ secrets.SNOWFLAKE_DATABASE }}
DBT_PROFILES_DIR: .
- name: Run dbt models
run: dbt run --target prod
env:
DBT_SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
DBT_SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }}
DBT_SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}
DBT_SNOWFLAKE_ROLE: ${{ secrets.SNOWFLAKE_ROLE }}
DBT_SNOWFLAKE_WAREHOUSE: ${{ secrets.SNOWFLAKE_WAREHOUSE }}
DBT_SNOWFLAKE_DATABASE: ${{ secrets.SNOWFLAKE_DATABASE }}
DBT_PROFILES_DIR: .
- name: Run dbt tests
run: dbt test --target prod
env:
DBT_SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
DBT_SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }}
DBT_SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}
DBT_SNOWFLAKE_ROLE: ${{ secrets.SNOWFLAKE_ROLE }}
DBT_SNOWFLAKE_WAREHOUSE: ${{ secrets.SNOWFLAKE_WAREHOUSE }}
DBT_SNOWFLAKE_DATABASE: ${{ secrets.SNOWFLAKE_DATABASE }}
DBT_PROFILES_DIR: .
- name: Notify on failure
if: failure()
run: echo "Job failed - send notification"
What This Workflow Does
Part 2: Prerequisites for Paradime Migration
1. Paradime Workspace Setup
2. Data Warehouse Connection
3. Git Repository Connected
4. GitHub App Integration (for Native CI/CD)
5. dbt™ Project
Part 3: Creating Your First Paradime Schedule
Method 1: Using the Bolt UI (Recommended for Beginners)
Step 1: Access Bolt
Step 2: Configure Schedule Settings
Step 3: Add Commands
Step 4: Configure Trigger
Step 5: Set Up Notifications
Step 6: Deploy
Method 2: Using Schedules as Code (YAML)
Step 1: Create paradime_schedules.yml
paradime_schedules.ymlStep 2: Commit and Push
Step 3: Sync in Paradime
Part 4: Migration Mapping Guide
GitHub Actions
Paradime Bolt
Notes
Part 5: Advanced Features in Paradime
Native GitHub Integration Benefits
Deferred Runs (Optimization)
Turbo CI for Pull Requests
Option 1: Native GitHub App Integration (Recommended)
Option 2: Manual GitHub Actions (Alternative)
Continuous Deployment on Merge
Option 1: Native GitHub App Integration (Recommended)
Option 2: Manual GitHub Actions (Alternative)
Part 6: Step-by-Step Migration Process
Phase 1: Parallel Run (Week 1)
Phase 2: Validation (Week 2)
Phase 3: Cutover (Week 3)
Phase 4: Cleanup (Week 4+)
Part 7: Troubleshooting Common Issues
Issue 1: Schedule Not Running
Issue 2: Commands Failing
Issue 3: Notifications Not Sending
Issue 4: Git Sync Issues
Part 8: Best Practices
1. Naming Conventions
2. Start Simple
3. Monitor Proactively
4. Use Version Control
5. Leverage Deferred Runs
Part 9: Quick Reference
Common Cron Schedules
Essential Commands
Useful Links
Conclusion
Last updated
Was this helpful?