Files
Jaume Garriga Maestre 1a6b2d90b3
All checks were successful
CI · Test & Deploy / Playwright tests (push) Successful in 1m50s
CI · Test & Deploy / Deploy to VPS (push) Successful in 27s
fix(ci): keep server alive across test steps, fix welcome screen test
2026-05-14 11:19:26 +02:00

81 lines
2.7 KiB
YAML

name: CI · Test & Deploy
on:
push:
branches: [main]
jobs:
# ─────────────────────────────────────────────
# JOB 1: Playwright smoke tests
# ─────────────────────────────────────────────
test:
name: Playwright tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Install Playwright + Chromium system deps
run: npx playwright install chromium --with-deps
# Start server AND run tests in the same shell so the background
# process is guaranteed alive for the full test run.
- name: Start server & run tests
run: |
npx --yes serve . --listen 9090 &
SERVER_PID=$!
sleep 3
npx playwright test --reporter=list
kill $SERVER_PID 2>/dev/null || true
env:
APP_URL: http://localhost:9090
# ─────────────────────────────────────────────
# JOB 2: Deploy to VPS (only if tests pass)
# ─────────────────────────────────────────────
deploy:
name: Deploy to VPS
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup SSH key
run: |
mkdir -p ~/.ssh
printf '%s\n' "$VPS_SSH_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -H 80.225.185.50 >> ~/.ssh/known_hosts
env:
VPS_SSH_KEY: ${{ secrets.VPS_SSH_KEY }}
- name: Upload static files
run: |
scp -i ~/.ssh/id_ed25519 index.html comarca-paths.js \
ubuntu@80.225.185.50:/srv/docker/data/comarques/public/
- name: Upload server files & rebuild
run: |
scp -i ~/.ssh/id_ed25519 server.js package.json Dockerfile \
ubuntu@80.225.185.50:/srv/docker/builds/comarques/
ssh -i ~/.ssh/id_ed25519 ubuntu@80.225.185.50 \
"cd /srv/docker/builds/comarques \
&& docker build -t comarques-de-catalunya:latest . \
&& cd /srv/docker/compose \
&& docker compose up -d comarques"
- name: Health check
run: |
sleep 5
curl -fs https://comarques.jaumegar.work/api/health \
|| (echo "Health check failed" && exit 1)