Skip to content

ci: add demo deployment pipeline with tag-triggered CI/CD#35

Merged
mighty840 merged 1 commit intomainfrom
ci/demo-deploy
Feb 24, 2026
Merged

ci: add demo deployment pipeline with tag-triggered CI/CD#35
mighty840 merged 1 commit intomainfrom
ci/demo-deploy

Conversation

@mighty840
Copy link
Copy Markdown
Owner

@mighty840 mighty840 commented Feb 24, 2026

Summary

  • Add GitHub Actions workflow triggered on v* tags that builds Docker images (server, admin, storefront), pushes to GHCR, and deploys to demo.kitchenasty.com via SSH
  • Add Caddy reverse proxy config with auto-HTTPS — routes /admin/* to admin container, everything else to storefront
  • Add production docker-compose with postgres, server, admin, storefront, and caddy services
  • Support configurable VITE_BASE_PATH in admin Dockerfile and vite config so admin can be served under /admin/
  • Add basename to BrowserRouter so React Router respects the Vite base path

Architecture

Internet → Caddy (443/80) → storefront:80  (/)
                           → admin:80      (/admin/*)

admin nginx  ─┐
storefront nginx ─┤─→ server:3000 (internal)
                           │
                     postgres:5432 (internal)

Required GitHub Secrets

Secret Description
SSH_PRIVATE_KEY Private SSH key for server access
SSH_USER SSH username (e.g., deploy)
DEMO_JWT_SECRET JWT secret for the demo instance

Test plan

  • Verify admin still works locally on / (default VITE_BASE_PATH)
  • Set GitHub secrets on the repo
  • Push a v* tag to trigger the workflow
  • Verify all 3 images build and push to GHCR
  • Verify SSH deploy succeeds
  • Visit https://demo.kitchenasty.com — storefront loads
  • Visit https://demo.kitchenasty.com/admin — admin login loads
  • Login and verify API calls work

🤖 Generated with Claude Code

Add GitHub Actions workflow that builds Docker images for server, admin,
and storefront on tag push, pushes to GHCR, and deploys to
demo.kitchenasty.com via SSH. Caddy serves as reverse proxy with
auto-HTTPS, routing /admin/* to the admin container and everything else
to storefront. Admin is built with configurable VITE_BASE_PATH for
subpath support, and BrowserRouter uses import.meta.env.BASE_URL as
basename so React Router respects the base path.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@mighty840 mighty840 merged commit c30832d into main Feb 24, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant