Task Details
Automate container image builds and publication to the NERSC container registry using GitHub Actions CI/CD, with a clear separation between development and production builds.
The development frontend is hosted on Vercel for rapid iteration. Both development and production backends, as well as the production frontend, are hosted on NERSC Spin.
Environment separation is enforced via image tags, Kubernetes namespaces, and deployment configuration, not by physical infrastructure.
Environment Overview
- Development
- Frontend: Vercel
- Backend: NERSC Spin (dev namespace)
- Image source: builds from the
main branch
- Production
- Frontend: NERSC Spin (prod namespace)
- Backend: NERSC Spin (prod namespace)
- Image source: versioned GitHub Releases / tags
This setup ensures production deployments are immutable, traceable, and explicitly promoted, while main remains a continuously deployable integration branch for development and testing.
Key Design Decisions
- ✅
main branch → development backend images
- ✅ GitHub versioned releases (e.g.
v0.3.0) → production frontend and backend images
- ✅ Dev and prod backends may run on the same NERSC Spin cluster, separated by namespaces and image tags
- ✅ Dev frontend is intentionally hosted on Vercel to optimize for rapid UX iteration
This follows standard DevOps best practices and supports the Vercel (dev frontend) + Spin (backend and prod frontend) split.
Steps to Complete
-
Define CI/CD Strategy
-
GitHub Actions Workflow
-
Development Build Path (Backend)
-
Production Build Path (Frontend + Backend)
-
Documentation
-
Validation
Additional Notes
- This approach intentionally avoids deploying
main directly to production.
- Production releases are explicit, auditable, and reproducible.
- Hosting the dev frontend on Vercel optimizes developer velocity while preserving backend parity.
- Aligns with institutional expectations for controlled deployments on NERSC Spin.
Task Details
Automate container image builds and publication to the NERSC container registry using GitHub Actions CI/CD, with a clear separation between development and production builds.
The development frontend is hosted on Vercel for rapid iteration. Both development and production backends, as well as the production frontend, are hosted on NERSC Spin.
Environment separation is enforced via image tags, Kubernetes namespaces, and deployment configuration, not by physical infrastructure.
Environment Overview
mainbranchThis setup ensures production deployments are immutable, traceable, and explicitly promoted, while
mainremains a continuously deployable integration branch for development and testing.Key Design Decisions
mainbranch → development backend imagesv0.3.0) → production frontend and backend imagesThis follows standard DevOps best practices and supports the Vercel (dev frontend) + Spin (backend and prod frontend) split.
Steps to Complete
Define CI/CD Strategy
main→ development backend images(e.g.
:dev,:sha-<commit>,:vX.Y.Z)GitHub Actions Workflow
pushtomainpushof version tagsDevelopment Build Path (Backend)
main, build the backend container imagedevProduction Build Path (Frontend + Backend)
v0.3.0)Documentation
Validation
mainAdditional Notes
maindirectly to production.