feat(admin): add configurable sponsor ad pricing via admin settings #1942
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: CI | |
| permissions: | |
| contents: read | |
| on: | |
| push: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main, develop] | |
| workflow_dispatch: | |
| jobs: | |
| lint-and-build: | |
| name: Lint and Build | |
| runs-on: ubuntu-latest | |
| env: | |
| # Default environment variables for development | |
| NEXT_PUBLIC_APP_URL: http://localhost:3000 | |
| DATABASE_URL: postgresql://postgres:postgres@localhost:5432/postgres | |
| # Auth defaults to suppress warnings | |
| AUTH_SECRET: "ci-test-secret-not-for-production" | |
| # Content repository defaults | |
| DATA_REPOSITORY: "ci-test-repo-not-used" | |
| CONTENT_WARNINGS_SILENT: "true" | |
| # Disable verbose warnings | |
| CI: "true" | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Detect package manager | |
| id: detect-pm | |
| run: | | |
| if [ -f "pnpm-lock.yaml" ]; then | |
| echo "manager=pnpm" >> $GITHUB_OUTPUT | |
| echo "lockfile=pnpm-lock.yaml" >> $GITHUB_OUTPUT | |
| echo "install-cmd=pnpm install" >> $GITHUB_OUTPUT | |
| echo "run-cmd=pnpm run" >> $GITHUB_OUTPUT | |
| elif [ -f "yarn.lock" ]; then | |
| echo "manager=yarn" >> $GITHUB_OUTPUT | |
| echo "lockfile=yarn.lock" >> $GITHUB_OUTPUT | |
| echo "install-cmd=yarn install --frozen-lockfile" >> $GITHUB_OUTPUT | |
| echo "run-cmd=yarn" >> $GITHUB_OUTPUT | |
| elif [ -f "package-lock.json" ]; then | |
| echo "manager=npm" >> $GITHUB_OUTPUT | |
| echo "lockfile=package-lock.json" >> $GITHUB_OUTPUT | |
| echo "install-cmd=npm ci" >> $GITHUB_OUTPUT | |
| echo "run-cmd=npm run" >> $GITHUB_OUTPUT | |
| else | |
| echo "manager=npm" >> $GITHUB_OUTPUT | |
| echo "lockfile=none" >> $GITHUB_OUTPUT | |
| echo "install-cmd=npm install" >> $GITHUB_OUTPUT | |
| echo "run-cmd=npm run" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Setup pnpm | |
| if: steps.detect-pm.outputs.manager == 'pnpm' | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: ${{ steps.detect-pm.outputs.manager }} | |
| - name: Install dependencies | |
| run: ${{ steps.detect-pm.outputs.install-cmd }} | |
| - name: Run lint | |
| run: ${{ steps.detect-pm.outputs.run-cmd }} lint | |
| continue-on-error: ${{ github.event_name == 'pull_request' }} | |
| - name: Type check | |
| run: ${{ steps.detect-pm.outputs.run-cmd }} typecheck || ${{ steps.detect-pm.outputs.run-cmd }} check:types || echo "No type check script found, skipping" | |
| - name: Create content directories | |
| run: | | |
| mkdir -p .content/data | |
| echo "Created content directories for build" | |
| - name: Build project | |
| run: ${{ steps.detect-pm.outputs.run-cmd }} build 2> >(grep -v "DATA_REPOSITORY\|AUTH CONFIG WARNING" >&2) | |
| env: | |
| # Use GitHub secrets for sensitive environment variables | |
| # Auth related variables | |
| NEXT_PUBLIC_APP_URL: ${{ env.NEXT_PUBLIC_APP_URL }} | |
| AUTH_SECRET: ${{ env.AUTH_SECRET }} | |
| # Supabase related variables (if using Supabase) | |
| NEXT_PUBLIC_SUPABASE_URL: ${{ secrets.NEXT_PUBLIC_SUPABASE_URL }} | |
| NEXT_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }} | |
| SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }} | |
| # Database related variables | |
| DATABASE_URL: ${{ secrets.DATABASE_URL || env.DATABASE_URL }} | |
| # OAuth Provider variables | |
| GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID || '' }} | |
| GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET || '' }} | |
| GITHUB_CLIENT_ID: ${{ secrets.GITHUB_CLIENT_ID || '' }} | |
| GITHUB_CLIENT_SECRET: ${{ secrets.GITHUB_CLIENT_SECRET || '' }} | |
| FB_CLIENT_ID: ${{ secrets.FACEBOOK_CLIENT_ID || '' }} | |
| FB_CLIENT_SECRET: ${{ secrets.FACEBOOK_CLIENT_SECRET || '' }} | |
| TWITTER_CLIENT_ID: ${{ secrets.TWITTER_CLIENT_ID || '' }} | |
| TWITTER_CLIENT_SECRET: ${{ secrets.TWITTER_CLIENT_SECRET || '' }} | |
| # Content repository variables | |
| DATA_REPOSITORY: ${{ secrets.DATA_REPOSITORY || '' }} | |
| GH_TOKEN: ${{ secrets.GH_TOKEN || '' }} | |
| # Email service variables (Resend) | |
| RESEND_API_KEY: ${{ secrets.RESEND_API_KEY || '' }} | |
| EMAIL_FROM: ${{ secrets.EMAIL_FROM || '[email protected]' }} | |
| - name: Check for build success | |
| run: | | |
| if [ -d ".next" ]; then | |
| echo "✅ Build successful" | |
| else | |
| echo "❌ Build failed" | |
| exit 1 | |
| fi |