compose: add wrapper-first dogfood workspace (#1487)
ci/woodpecker/pr/ci Pipeline was successful

This commit is contained in:
2026-08-30 16:07:25 -05:00
parent e18d13d36f
commit 9b85978793
5 changed files with 222 additions and 2 deletions
+10 -2
View File
@@ -29,11 +29,19 @@ ENV NODE_ENV=production
# $MOSAIC_ROOT/.workspaces (apps/gateway/src/workspace/workspace.service.ts);
# mount a volume over /opt/mosaic to persist workspaces across container restarts.
# Intentionally unpinned: Alpine's signed repository is the trust anchor; pinning
# git was declined so routine base-image security updates remain maintainable.
RUN apk add --no-cache git \
# packages was declined so routine base-image security updates remain maintainable.
# bash/curl/python3 are runtime dependencies of the provider-neutral Mosaic git
# wrappers. jq supports wrapper discovery for non-canonical Gitea hosts.
RUN apk add --no-cache bash curl git jq python3 \
&& mkdir -p /opt/mosaic/.workspaces \
&& chown -R node:node /opt/mosaic /app
ENV MOSAIC_ROOT=/opt/mosaic
# Dogfood agents use the same fail-closed credential helper and PR wrappers as
# fleet seats. The complete tools directory is copied because pr-create.sh shares
# provider detection, declaration validation, and credential libraries with the
# rest of the wrapper suite.
COPY --from=builder /app/packages/mosaic/framework/tools /opt/mosaic/tools
RUN git config --system credential.helper /opt/mosaic/tools/git/git-credential-mosaic
# Use the pnpm deploy output — resolves all deps into a flat, self-contained node_modules
COPY --chown=node:node --from=builder /deploy/node_modules ./node_modules
COPY --chown=node:node --from=builder /deploy/package.json ./package.json