name: Deploy on: push: branches: [main] jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - run: npm install - run: npx eslint --quiet src/ typecheck: name: Typecheck runs-on: ubuntu-latest needs: [lint] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - run: npm install - run: npx tsc --noEmit test: name: Test runs-on: ubuntu-latest needs: [lint] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - run: npm install - run: npx vitest run deploy: name: Deploy runs-on: ubuntu-latest needs: [typecheck, test] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 - name: Deploy to Railway env: RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }} run: npx --yes @railway/cli up --service "${{ secrets.RAILWAY_SERVICE_ID }}"