e80a303101
Deploy / deploy (push) Failing after 30s
The shell runs with -e, so a failed curl/grep check on any past run would skip docker stop and leave vu-smoke bound to port 8080 — which is exactly what happened, blocking this run's own docker run with "port is already allocated". Remove any leftover container unconditionally before starting, rather than assuming the previous run's cleanup succeeded. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
56 lines
1.8 KiB
YAML
56 lines
1.8 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.
|
|
#
|
|
# The shell runs with `-e`, so a failed curl/grep on a past run
|
|
# could skip `docker stop`/`rm` and leave vu-smoke bound to 8080,
|
|
# blocking every run after it — clean up any leftover first,
|
|
# unconditionally, rather than relying on the previous run's own
|
|
# cleanup having succeeded.
|
|
run: |
|
|
docker rm -f vu-smoke 2>/dev/null || true
|
|
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
|
|
docker rm 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 }}
|