name: Deploy on: push: branches: - master paths-ignore: - release-notes.md workflow_dispatch: permissions: contents: read jobs: deploy: # Do not deploy the template repository, only projects created from it if: github.repository != 'fastapi/full-stack-fastapi-template' runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 persist-credentials: false - name: Set up Bun uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 with: bun-version: 1.3.12 - name: Install frontend dependencies run: bun ci - name: Build frontend run: bun run --filter frontend build env: # Override frontend/.env so the deployed frontend uses the same origin as the API VITE_API_URL: "" - name: Set up uv uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0 with: version: "0.11.18" - name: Prepare database run: uv run bash scripts/prestart.sh working-directory: backend env: DATABASE_URL: ${{ secrets.DATABASE_URL }} PROJECT_NAME: ${{ vars.PROJECT_NAME }} SECRET_KEY: ${{ secrets.SECRET_KEY }} FIRST_SUPERUSER: ${{ vars.FIRST_SUPERUSER }} FIRST_SUPERUSER_PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }} - name: Deploy to FastAPI Cloud run: uv run fastapi deploy env: FASTAPI_CLOUD_TOKEN: ${{ secrets.FASTAPI_CLOUD_TOKEN }} FASTAPI_CLOUD_APP_ID: ${{ secrets.FASTAPI_CLOUD_APP_ID }}