2d442f9958
Deploy / deploy (push) Failing after 38s
jsdom 30 dropped support for Node 20 (needs ^22.22.2 || ^24.15.0 || >=26.0.0). The CI workflow was still pinned to Node 20 from before that dependency bump, so `npm test` failed in every run since — tests passed locally (on Node 26) but the pipeline never got past the Test step, so neither of the last two pushes actually deployed. The Dockerfile's own build stage doesn't need the same bump: it only runs `npm run build` (tsc + vite), which doesn't touch jsdom. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
48 lines
1.4 KiB
YAML
48 lines
1.4 KiB
YAML
name: Deploy
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "26"
|
|
|
|
- name: Install
|
|
run: npm ci
|
|
|
|
- name: Build
|
|
run: npm run build
|
|
|
|
- name: Test
|
|
run: npm test
|
|
|
|
- name: Build and smoke-test the container
|
|
# vu has no server-side logic, so there's nothing an integration
|
|
# test would exercise beyond "does the built bundle actually get
|
|
# served correctly under the /vu/ base path" — this is that check,
|
|
# run against the exact image that ships.
|
|
run: |
|
|
docker build -t vu:ci .
|
|
docker run -d --name vu-smoke -p 8080:80 vu:ci
|
|
sleep 1
|
|
curl -sf http://localhost:8080/ | grep -q 'vu — Divine Office'
|
|
docker stop vu-smoke
|
|
|
|
- name: Trigger redeploy via SSH
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
printf '%s\n' "$VU_DEPLOY_SSH_KEY" > ~/.ssh/deploy_key
|
|
chmod 600 ~/.ssh/deploy_key
|
|
# Forced-command key, same pattern as eec/bookshop/drip: the
|
|
# server-side sudoers grant runs the vu redeploy script regardless
|
|
# of what's requested here — see the vu Ansible role.
|
|
ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=accept-new vu-deploy@reground.org true
|
|
env:
|
|
VU_DEPLOY_SSH_KEY: ${{ secrets.VU_DEPLOY_SSH_KEY }}
|