|
26 | 26 | runs-on: ubuntu-latest |
27 | 27 | timeout-minutes: 30 |
28 | 28 | env: |
29 | | - # Railway CLI expects account/workspace tokens in RAILWAY_API_TOKEN. |
| 29 | + # Keep both names because Railway CLI behavior varies across versions. |
| 30 | + RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }} |
30 | 31 | RAILWAY_API_TOKEN: ${{ secrets.RAILWAY_TOKEN }} |
31 | 32 | RAILWAY_PROJECT_ID: ${{ secrets.RAILWAY_PROJECT_ID }} |
32 | 33 | RAILWAY_ENVIRONMENT_ID: ${{ secrets.RAILWAY_ENVIRONMENT_ID }} |
|
35 | 36 | steps: |
36 | 37 | - name: Validate Railway secrets |
37 | 38 | run: | |
38 | | - test -n "${RAILWAY_API_TOKEN}" || (echo "Missing secret: RAILWAY_TOKEN" && exit 1) |
| 39 | + test -n "${RAILWAY_TOKEN}" || (echo "Missing secret: RAILWAY_TOKEN" && exit 1) |
39 | 40 | test -n "${RAILWAY_PROJECT_ID}" || (echo "Missing secret: RAILWAY_PROJECT_ID" && exit 1) |
40 | 41 | test -n "${RAILWAY_ENVIRONMENT_ID}" || (echo "Missing secret: RAILWAY_ENVIRONMENT_ID" && exit 1) |
41 | 42 | test -n "${RAILWAY_SERVICE_ID}" || (echo "Missing secret: RAILWAY_SERVICE_ID" && exit 1) |
|
59 | 60 |
|
60 | 61 | - name: Deploy to Railway (CI mode) |
61 | 62 | run: | |
62 | | - railway up \ |
63 | | - --ci \ |
64 | | - --project "${RAILWAY_PROJECT_ID}" \ |
65 | | - --environment "${RAILWAY_ENVIRONMENT_ID}" \ |
66 | | - --service "${RAILWAY_SERVICE_ID}" |
| 63 | + # Railway builder failures can be transient (container bootstrap/network). |
| 64 | + # Retry the deploy to reduce false-negative workflow failures. |
| 65 | + for attempt in 1 2 3; do |
| 66 | + echo "Railway deploy attempt ${attempt}/3" |
| 67 | + if railway up \ |
| 68 | + --ci \ |
| 69 | + --project "${RAILWAY_PROJECT_ID}" \ |
| 70 | + --environment "${RAILWAY_ENVIRONMENT_ID}" \ |
| 71 | + --service "${RAILWAY_SERVICE_ID}"; then |
| 72 | + echo "Railway deploy succeeded." |
| 73 | + exit 0 |
| 74 | + fi |
| 75 | + if [ "${attempt}" -lt 3 ]; then |
| 76 | + echo "Deploy attempt ${attempt} failed. Retrying in 20s..." |
| 77 | + sleep 20 |
| 78 | + fi |
| 79 | + done |
| 80 | + echo "Railway deploy failed after 3 attempts." |
| 81 | + exit 1 |
0 commit comments