Add CI/CD workflow and deployment docs #1
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
| # CI/CD: run on every push to main. Ensures lint and build pass. | |
| # Deploy: connect this repo in Vercel and set Production Branch = main for auto-deploy. | |
| name: CI/CD | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| env: | |
| NODE_VERSION: "20" | |
| jobs: | |
| ci: | |
| name: Lint & Build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: "npm" | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Generate Prisma Client | |
| env: | |
| # Prisma generate only needs DATABASE_URL to be set (not used at generate time) | |
| DATABASE_URL: "postgresql://placeholder:placeholder@localhost:5432/placeholder" | |
| DIRECT_URL: "postgresql://placeholder:placeholder@localhost:5432/placeholder" | |
| run: npx prisma generate | |
| - name: Lint | |
| run: npm run lint | |
| - name: Build | |
| env: | |
| DATABASE_URL: ${{ secrets.DATABASE_URL || 'postgresql://placeholder:placeholder@localhost:5432/placeholder' }} | |
| DIRECT_URL: ${{ secrets.DIRECT_URL || 'postgresql://placeholder:placeholder@localhost:5432/placeholder' }} | |
| # Clerk keys needed if any auth is used at build time | |
| NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY || 'pk_test_placeholder' }} | |
| CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY || 'sk_test_placeholder' }} | |
| NEXT_PUBLIC_APP_URL: ${{ secrets.NEXT_PUBLIC_APP_URL || 'https://developers-doc-1.vercel.app' }} | |
| run: npx next build |