Merge branch 'main' into staging #89
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: cd | |
| on: | |
| # Trigger deployment on push to staging, main | |
| push: | |
| branches: [ staging, main ] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: false | |
| permissions: | |
| contents: write | |
| # Note: We deploy the individual apps (server.py, search_app.py, processing_app.py) | |
| # for optimal cold start performance. The dev_combined.py app is ONLY for local | |
| # development and should never be deployed to staging/prod. | |
| jobs: | |
| # ------------------------------------------------------------------ | |
| # STAGING DEPLOYMENT (Runs on push to 'staging') | |
| # ------------------------------------------------------------------ | |
| deploy-staging: | |
| name: Deploy Staging | |
| if: github.ref == 'refs/heads/staging' | |
| runs-on: ubuntu-latest | |
| environment: staging # for GitHub Actions | |
| defaults: | |
| run: | |
| working-directory: backend | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Install ffmpeg | |
| run: sudo apt-get update && sudo apt-get install -y ffmpeg | |
| - name: Install dependencies | |
| run: uv sync --frozen | |
| - name: Deploy Processing App (Staging) | |
| env: | |
| MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }} | |
| MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }} | |
| ENVIRONMENT: staging | |
| run: uv run modal deploy apps/processing_app.py | |
| - name: Deploy Search App (Staging) | |
| env: | |
| MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }} | |
| MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }} | |
| ENVIRONMENT: staging | |
| run: uv run modal deploy apps/search_app.py | |
| - name: Deploy Server (Staging) | |
| env: | |
| MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }} | |
| MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }} | |
| ENVIRONMENT: staging | |
| run: uv run modal deploy apps/server.py | |
| # ------------------------------------------------------------------ | |
| # PRODUCTION DEPLOYMENT (Runs on push to 'main') | |
| # ------------------------------------------------------------------ | |
| deploy-prod: | |
| name: Deploy Production | |
| if: github.ref == 'refs/heads/main' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: backend | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| enable-cache: true | |
| - name: Install ffmpeg | |
| run: sudo apt-get update && sudo apt-get install -y ffmpeg | |
| - name: Install dependencies | |
| run: uv sync --frozen | |
| - name: Deploy Processing App (Prod) | |
| env: | |
| MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }} | |
| MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }} | |
| ENVIRONMENT: prod | |
| run: uv run modal deploy apps/processing_app.py | |
| - name: Deploy Search App (Prod) | |
| env: | |
| MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }} | |
| MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }} | |
| ENVIRONMENT: prod | |
| run: uv run modal deploy apps/search_app.py | |
| - name: Deploy Server (Prod) | |
| env: | |
| MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }} | |
| MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }} | |
| ENVIRONMENT: prod | |
| run: uv run modal deploy apps/server.py |