dvijaykrishnan's picture
fix(ci): allow railway deployment to fail without breaking pipeline
6ad6dca
Raw
History Blame Contribute Delete
2.36 kB
name: Build and Deploy
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Test
run: npx vitest run
- name: Build
run: npm run build
env:
NEXT_PUBLIC_SUPABASE_URL: ${{ secrets.NEXT_PUBLIC_SUPABASE_URL }}
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
INNGEST_EVENT_KEY: ${{ secrets.INNGEST_EVENT_KEY }}
INNGEST_SIGNING_KEY: ${{ secrets.INNGEST_SIGNING_KEY }}
BETTER_AUTH_SECRET: ${{ secrets.BETTER_AUTH_SECRET }}
BETTER_AUTH_URL: ${{ secrets.BETTER_AUTH_URL }}
deploy:
needs: build-and-test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate Deployment Secrets
run: |
if [ -z "${{ secrets.VERCEL_TOKEN }}" ]; then echo "❌ VERCEL_TOKEN is missing"; exit 1; fi
if [ -z "${{ secrets.VERCEL_ORG_ID }}" ]; then echo "❌ VERCEL_ORG_ID is missing"; exit 1; fi
if [ -z "${{ secrets.VERCEL_PROJECT_ID }}" ]; then echo "❌ VERCEL_PROJECT_ID is missing"; exit 1; fi
if [ -z "${{ secrets.RAILWAY_TOKEN }}" ]; then echo "❌ RAILWAY_TOKEN is missing"; exit 1; fi
if [ -z "${{ secrets.RAILWAY_PROJECT_ID }}" ]; then echo "❌ RAILWAY_PROJECT_ID is missing"; exit 1; fi
echo "βœ… Deployment secrets validated"
- name: Deploy to Vercel
run: npx vercel deploy --prod --yes --token ${{ secrets.VERCEL_TOKEN }}
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
- name: Deploy to Railway
continue-on-error: true
run: npx @railway/cli up --detach --project ${{ secrets.RAILWAY_PROJECT_ID }} --service 176fed9b-b38b-4f4c-a203-4d6093e30046 --environment production
env:
RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}