Deployment
Deployment
Normal deploy (push to main)
git push origin mainWoodpecker CI triggers automatically:
- build.yml — builds Docker image, pushes to Gitea registry
- trigger-deploy step — fires the deploy pipeline
- deploy.yml — SCPs
docker-compose.ymlto web VPS, pulls new image, recreates container
Monitor progress in Woodpecker at http://100.81.122.65:8000 (Tailscale access required).
Manual deploy
In Woodpecker, navigate to the level147/level147.net repo and click Run pipeline to trigger the deploy pipeline manually.
!!! note “Linter warnings”
The deploy pipeline shows linter warnings about network_mode: host at the step level. These are cosmetic — the pipeline executes correctly. backend_options.docker.network_mode is not honoured by the installed Woodpecker agent version.
Verifying the deploy
# On web VPSdocker ps --filter "name=level147-net" --format "{{.Names}}\t{{.Status}}"# Should show: level147-net Up X minutes (healthy)
# Check the app respondsdocker exec level147-net node -e \ "require('http').get('http://localhost:3000/api/health', r => {console.log(r.statusCode); process.exit(0)}).on('error', e => {console.error(e.message); process.exit(1)})"# Should print: 200Rollback
The Gitea registry retains previous image tags only if they were pushed with distinct tags. The :prod tag is overwritten on each build. To rollback, rebuild from the previous git commit:
git revert HEADgit push origin main