Skip to content

feat(ci): route in-image pnpm installs through Verdaccio when reachable - #4

Merged
evereq merged 1 commit into
previewfrom
feat/verdaccio-in-image-installs
Aug 22, 2026
Merged

evereq merged 1 commit into
previewfrom
feat/verdaccio-in-image-installs

Conversation

@evereq

@evereq evereq commented Aug 22, 2026

Copy link
Copy Markdown
Member

What

The k8s-build images (plane-web / plane-space) do all package installs inside apps/web/Dockerfile.web and apps/space/Dockerfile.space, which previously always hit the public npm registry from the LAN runners.

  • Dockerfiles (web + space): add ARG VERDACCIO_REGISTRY="" plus a 3-second reachability probe in the same RUN layer as pnpm fetch. Reachable -> append registry=<verdaccio> to the image-local .npmrc (the project .npmrc defines no registry key, and pnpm-lock v9 stores no tarball URLs for the default registry, so config alone is sufficient - no lockfile rewrite). Unreachable or unset -> warn and keep the public registry. No token or secret enters any layer.
  • k8s-build.yml: pass VERDACCIO_REGISTRY from the org var as a build-arg in the (single, matrixed) build-push step. Passing it unconditionally is safe: on a GitHub-hosted fallback runner the LAN VIP probe fails fast and the build proceeds on the public registry.

Why the diff looks like this

This fork tracks upstream makeplane/plane on one branch (preview), so the change is deliberately small and fenced with Ever customization markers to keep upstream-merge burden minimal. Only the two Dockerfiles that k8s-build actually builds are touched (admin/live/api are built by the upstream build-branch.yml only, and take no build-arg from us - left untouched on purpose).

Verification plan

Merge -> k8s-build runs on push to preview -> BuildKit log shows the probe verdict (Verdaccio reachable -> using http://...) and the fetch output on the LAN runners.

🤖 Generated with Claude Code

The k8s-build images (plane-web / plane-space) install all packages inside
Dockerfile.web / Dockerfile.space, which previously always hit the public
npm registry. Add an optional VERDACCIO_REGISTRY build-arg with a 3s
reachability probe in the same RUN layer as 'pnpm fetch': reachable ->
append registry= to the image-local .npmrc (pnpm-lock v9 stores no
default-registry tarball URLs, so config alone suffices); unreachable or
unset -> warn and keep the public registry. No token or secret enters any
layer. k8s-build.yml passes the org var unconditionally; the probe makes
it safe on GitHub-hosted fallback runners where the LAN VIP is unreachable.

Diff is deliberately small and fenced with 'Ever customization' markers to
minimize upstream (makeplane/plane) merge burden.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@evereq

evereq commented Aug 22, 2026

Copy link
Copy Markdown
Member Author

Merging past the red checks - proof they are pre-existing on preview, not introduced here:

  • Analyze (javascript) / Analyze (python) (CodeQL): the codeql.yml workflow has failed on every recorded run of preview itself (runs of 2026-07-19 x5 and 2026-07-23, all failure). This PR touches only two Dockerfiles and one workflow file - no JS/Python source.
  • check:format (space#check:format = oxfmt --check . over apps/space JS/TS): the only previous run of pull-request-build-lint-web-apps.yml (2026-07-23, branch ever) also failed check:format (plus check:lint and Build packages, both of which are green here). This PR modifies apps/space/Dockerfile.space only - not an oxfmt target.

Everything this PR can influence is green: Build packages, check:lint, check:types, Copy Right Check, license/cla, React Doctor, Analyze (actions / javascript-typescript).

@evereq
evereq merged commit c0e69ff into preview Aug 22, 2026
12 of 15 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