Skip to content

Add Dockerfile and Datum Cloud deploy pipeline - #9

Merged
zsmithnyc merged 3 commits into
mainfrom
deploy-pipeline
Oct 22, 2026
Merged

zsmithnyc merged 3 commits into
mainfrom
deploy-pipeline

Conversation

@zsmithnyc

Copy link
Copy Markdown
Collaborator

Summary

Stacked on #1.

  • Add output: "standalone" to next.config.ts and a multi-stage Dockerfile -- verified end-to-end locally (build, run, security headers/CSP from Add LICENSE, security headers, CI, and OSS project docs #1 still correct)
  • Add .github/workflows/deploy.yml: builds and pushes to ghcr.io/altsmanager/web on push to main, then deploys to Datum Cloud Compute via datumctl compute deploy
  • NEXT_PUBLIC_API_URL is baked in at build time from an API_PUBLIC_URL repo variable (Next.js inlines NEXT_PUBLIC_* vars into the client bundle at build time, so it can't be supplied later)
  • Add DEPLOY.md with the one-time setup this depends on

Context / open items

Same as api#12: Datum Compute access for the altsmanager project is pending, and the exact datumctl compute deploy behavior on repeat calls is unverified against a real deployment.

Testing

  • docker build --build-arg NEXT_PUBLIC_API_URL=... . succeeds
  • Container runs and serves /login with the expected security headers/CSP intact
  • npm run lint and npm run build pass
  • actionlint passes on the new workflow

🤖 Generated with Claude Code

- Add output: "standalone" to next.config.ts and a multi-stage Dockerfile
  (node:20-slim) -- verified end-to-end locally (build, run, headers/CSP
  still correct from the prior security-hardening work)
- Add .github/workflows/deploy.yml: build+push to ghcr.io on push to main,
  then datumctl compute deploy to Datum Cloud Compute. NEXT_PUBLIC_API_URL is
  baked in at build time from the API_PUBLIC_URL repo variable, since Next.js
  inlines NEXT_PUBLIC_* vars into the client bundle at build time
- Add DEPLOY.md documenting the one-time setup and what's still unverified

Stacked on security-hardening (#1).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@zsmithnyc
zsmithnyc changed the base branch from security-hardening to main October 21, 2026 19:46
@zsmithnyc

Copy link
Copy Markdown
Collaborator Author

Reopening to trigger CI after the base-branch retarget.

zsmithnyc and others added 2 commits October 22, 2026 06:56
…es in dependabot

Node.js shipped a security release on 2026-10-21 covering the 22.x/24.x/26.x
lines (CVE-2026-111497, a HIGH-severity Brotli decoder out-of-bounds write
reachable via fetch()'s auto-decompression, among others) -- 20.x isn't in
that list at all, since it reached end of life in April 2026 and gets no
further patches. Next.js 16 only requires Node >=20.9 as a floor, so bumping
to the 22.x LTS line (currently patched) is safe.

Add a dependabot "docker" ecosystem entry so a stale/EOL base image doesn't
go unnoticed like this again.

Verified: image builds, container runs node v22.23.4 (the just-patched
version), serves /login with the expected security headers intact.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@zsmithnyc
zsmithnyc merged commit 625e854 into main Oct 22, 2026
4 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