ci: bake git into the prebuilt test image #819

Merged
jason.woltje merged 1 commits from fix/795-ci-base-git into main 2026-07-17 18:11:17 +00:00
Owner

Summary

  • add git to the Dockerfile.ci Alpine package set
  • keep framework shell fixtures self-contained without per-run package installation

Why

PR #815 now runs a hermetic git fixture from the Woodpecker test step. Pipeline 1889 proved ci-base:latest includes bash but not git, causing the test to fail before fixture setup.

Delivery sequence

  1. Merge this prerequisite PR.
  2. Allow ci-image.yml to rebuild ci-base:latest from the main push.
  3. Rebase PR #815 onto that main commit and rerun exact-head CI.

Related to #795. This PR intentionally does not close the issue.

## Summary - add git to the Dockerfile.ci Alpine package set - keep framework shell fixtures self-contained without per-run package installation ## Why PR #815 now runs a hermetic git fixture from the Woodpecker test step. Pipeline 1889 proved ci-base:latest includes bash but not git, causing the test to fail before fixture setup. ## Delivery sequence 1. Merge this prerequisite PR. 2. Allow ci-image.yml to rebuild ci-base:latest from the main push. 3. Rebase PR #815 onto that main commit and rerun exact-head CI. Related to #795. This PR intentionally does not close the issue.
jason.woltje added 1 commit 2026-07-17 17:58:02 +00:00
feat(#795): bake git into CI base image
All checks were successful
ci/woodpecker/pr/ci Pipeline was successful
fa5fc3cd80
Author
Owner

Reviewer-of-Record — PR #819 (issue #795 prerequisite — bake git into ci-base) @ fa5fc3cdAPPROVE (merge-gated on CI + coordinator GO)

Independent exact-head review. Author lane: ms-795 (Codex). Reviewer lane: MS Team Lead independent Opus reviewer. author≠reviewer PROCESS/LANE-attested (single provider acct jason.woltje).

Scope CLEAN — 1 file, Dockerfile.ci +3/-3. Adds git to the pre-baked apk set (python3 make g++ postgresql-client bash git) and truthfully rewrites the adjacent comment (bash and git are baked here too — framework shell tests require both without paying for per-run package installation in ci.yml). No folded changes, no .mosaic/, no secret.

Prospective tree. base.sha 9ddc6fbd == current main head (verified) · merge-base = current main · mergeable=True. No other open PR (#818/#815/#789) touches Dockerfile.ci → zero concurrent-modify risk; prospective squash tree = main + this single hunk.

Adversarial checks (PASS):

  1. Purely additive apk package; git is a valid Alpine package; unpinned, consistent with sibling packages here. No toolchain/version conflict.
  2. Comment truthful and consistent with the file's documented bake-over-per-run convention: bash is used by the sanitization step; git is required by test-pr-diff-context.sh (framework shell test wired in #815).
  3. Bootstrapping correct: this PR's CI runs on the CURRENT (git-less) ci-base, but test-pr-diff-context.sh is NOT yet wired on main (only in unmerged #815) → pnpm test does not invoke it → this PR is expected green without git.
  4. No secret / .mosaic/ / live mutation. ci-base rebuilds only via the .woodpecker/ci-image.yml pipeline post-merge (no manual image push).

Merge gate: terminal-green PR CI (pipeline 1891, currently pending) + coordinator (Mos) GO. Post-merge (Mos-mandated): require terminal-SUCCESS ci-image.yml descendant build publishing ci-base:latest WITH git BEFORE #815 rebase; #815 then gets a new exact head + fresh CI + fresh RoR, zero evidence transfer. Head must not move to add evidence.

## Reviewer-of-Record — PR #819 (issue #795 prerequisite — bake git into ci-base) @ `fa5fc3cd` — **APPROVE** (merge-gated on CI + coordinator GO) Independent exact-head review. Author lane: ms-795 (Codex). Reviewer lane: MS Team Lead independent Opus reviewer. author≠reviewer PROCESS/LANE-attested (single provider acct `jason.woltje`). **Scope CLEAN — 1 file, `Dockerfile.ci` +3/-3.** Adds `git` to the pre-baked apk set (`python3 make g++ postgresql-client bash git`) and truthfully rewrites the adjacent comment (`bash` and `git` are baked here too — framework shell tests require both without paying for per-run package installation in ci.yml). No folded changes, no `.mosaic/`, no secret. **Prospective tree.** base.sha `9ddc6fbd` == current main head (verified) · merge-base = current main · mergeable=True. No other open PR (#818/#815/#789) touches `Dockerfile.ci` → zero concurrent-modify risk; prospective squash tree = main + this single hunk. **Adversarial checks (PASS):** 1. Purely additive apk package; `git` is a valid Alpine package; unpinned, consistent with sibling packages here. No toolchain/version conflict. 2. Comment truthful and consistent with the file's documented bake-over-per-run convention: `bash` is used by the sanitization step; `git` is required by `test-pr-diff-context.sh` (framework shell test wired in #815). 3. Bootstrapping correct: this PR's CI runs on the CURRENT (git-less) ci-base, but `test-pr-diff-context.sh` is NOT yet wired on main (only in unmerged #815) → `pnpm test` does not invoke it → this PR is expected green without git. 4. No secret / `.mosaic/` / live mutation. ci-base rebuilds only via the `.woodpecker/ci-image.yml` pipeline post-merge (no manual image push). **Merge gate:** terminal-green PR CI (pipeline 1891, currently pending) + coordinator (Mos) GO. **Post-merge (Mos-mandated):** require terminal-SUCCESS `ci-image.yml` descendant build publishing `ci-base:latest` WITH git BEFORE #815 rebase; #815 then gets a new exact head + fresh CI + fresh RoR, zero evidence transfer. Head must not move to add evidence.
jason.woltje merged commit cabf02e7b9 into main 2026-07-17 18:11:17 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#819