Skip to content

feat: Modernize demand forecasting solution to 2025 standards #1

feat: Modernize demand forecasting solution to 2025 standards

feat: Modernize demand forecasting solution to 2025 standards #1

Workflow file for this run

name: "Deploy Fine-Grained Demand Forecasting DAB"
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy to'
required: true
default: 'dev'
type: choice
options:
- dev
- staging
- prod
push:
branches:
- main
- develop
pull_request:
branches:
- main
env:
DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }}
DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}
jobs:
code-quality:
name: "Code Quality Checks"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install -e src/
- name: Run linting
run: |
flake8 src/ --max-line-length=88 --extend-ignore=E203,W503
black --check src/
- name: Run type checking
run: |
mypy src/ --ignore-missing-imports
- name: Run unit tests
run: |
pytest tests/ -v --cov=demand_forecasting --cov-report=xml
- name: Upload coverage reports
uses: codecov/codecov-action@v3
with:
file: ./coverage.xml
validate-bundle:
name: "Validate Databricks Bundle"
runs-on: ubuntu-latest
needs: code-quality
steps:
- uses: actions/checkout@v4
- name: Setup Databricks CLI
uses: databricks/setup-cli@main
- name: Validate bundle configuration
run: |
databricks bundle validate --target dev
- name: Generate bundle deployment plan
run: |
databricks bundle plan --target dev
deploy-dev:
name: "Deploy to Development"
runs-on: ubuntu-latest
needs: [code-quality, validate-bundle]
if: github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main'
environment: dev
steps:
- uses: actions/checkout@v4
- name: Setup Databricks CLI
uses: databricks/setup-cli@main
- name: Deploy to dev environment
run: |
databricks bundle deploy --target dev
- name: Run data generation pipeline
run: |
databricks bundle run demand_forecasting_pipeline --target dev
- name: Verify deployment
run: |
databricks bundle summary --target dev
deploy-staging:
name: "Deploy to Staging"
runs-on: ubuntu-latest
needs: [deploy-dev]
if: github.ref == 'refs/heads/main'
environment: staging
steps:
- uses: actions/checkout@v4
- name: Setup Databricks CLI
uses: databricks/setup-cli@main
- name: Deploy to staging environment
run: |
databricks bundle deploy --target staging
- name: Run integration tests
run: |
databricks bundle run demand_forecasting_pipeline --target staging
- name: Validate forecast quality
run: |
# Add data quality validation scripts here
echo "Running forecast quality validation..."
deploy-prod:
name: "Deploy to Production"
runs-on: ubuntu-latest
needs: [deploy-staging]
if: github.ref == 'refs/heads/main'
environment: prod
steps:
- uses: actions/checkout@v4
- name: Setup Databricks CLI
uses: databricks/setup-cli@main
- name: Deploy to production environment
run: |
databricks bundle deploy --target prod
- name: Create deployment tag
run: |
git tag "prod-$(date +%Y%m%d-%H%M%S)"
git push origin --tags
- name: Notify deployment success
run: |
echo "🚀 Production deployment successful!"
echo "📊 Demand forecasting pipeline is now live in production"
cleanup-pr:
name: "Cleanup PR Environment"
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' && github.event.action == 'closed'
steps:
- uses: actions/checkout@v4
- name: Setup Databricks CLI
uses: databricks/setup-cli@main
- name: Cleanup PR resources
run: |
# Clean up any PR-specific resources
echo "Cleaning up PR resources..."
# databricks bundle destroy --target pr-${{ github.event.number }}