Deploy a Modal application with environment configuration and CI/CD setup
Deploy Modal apps with environment config, secrets, and CI/CD workflows. Includes pre-deployment checks and production-ready setup.
/plugin marketplace add JosiahSiegel/claude-plugin-marketplace/plugin install modal-master@claude-plugin-marketplaceDeploy a Modal application with environment configuration and CI/CD setup.
Help deploy a Modal application to production with:
Pre-deployment Checks
modal runEnvironment Configuration
Deployment Execution
modal deployCI/CD Setup (Optional)
# Test locally first
modal run app.py
# Deploy to default environment
modal deploy app.py
# Deploy to specific environment
MODAL_ENVIRONMENT=prod modal deploy app.py
# Deploy specific module
modal deploy -m mypackage.module
# List deployments
modal app list
# View logs
modal app logs my-app
name: Deploy to Modal
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
environment: ${{ github.ref == 'refs/heads/main' && 'production' || 'staging' }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install modal
pip install -r requirements.txt
- name: Deploy to Modal
run: modal deploy app.py
env:
MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }}
MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }}
MODAL_ENVIRONMENT: ${{ github.ref == 'refs/heads/main' && 'prod' || 'staging' }}
# Create environments
modal environment create dev
modal environment create staging
modal environment create prod
# Create environment-specific secrets
MODAL_ENVIRONMENT=prod modal secret create api-keys \
OPENAI_API_KEY=sk-prod-xxx \
DATABASE_URL=postgres://prod...
MODAL_ENVIRONMENT=staging modal secret create api-keys \
OPENAI_API_KEY=sk-staging-xxx \
DATABASE_URL=postgres://staging...
modal run# Check deployment status
modal app list
# View app details
modal app show my-app
# Test web endpoint
curl https://your-app--endpoint.modal.run/
# Check logs for errors
modal app logs my-app --follow
# List deployment history
modal app history my-app
# Rollback to previous version
modal app rollback my-app --version <version-id>
modal run works locally firstgpu=["H100", "A100", "any"]timeout parametermemory parameter