mirror of
https://github.com/tiennm99/ccs.git
synced 2026-10-15 06:16:03 +00:00
* fix(docker): parameterize image with CCS_IMAGE env so smoke-test exercises new digest
docker/compose.yaml hardcoded image: ghcr.io/kaitranntt/ccs:latest, causing
network-contract.sh to always use the old published image regardless of what
IMAGE_OVERRIDE was passed. Switching to \${CCS_IMAGE:-ghcr.io/kaitranntt/ccs:latest}
lets CI pass CCS_IMAGE=<digest> so the smoke-test actually exercises the
just-built image. Default end-user behaviour is unchanged.
Resolves REV4 (reviewer loop 2, PR #1261).
* fix(test): image-size.sh fails loudly on manifest inspection failure
The --platform branch previously exited 0 when imagetools inspect returned
empty or zero bytes, silently passing the budget check. A broken image
could reach production undetected if buildx had any inspection issue.
Changed to exit 1 with a clear diagnostic message explaining possible causes
(old buildx, manifest format mismatch, image not yet pushed). No --allow-inspect-failure
escape hatch is provided; CI must fix the root cause.
Resolves REV5 (reviewer loop 2, PR #1261).
* test(docker): cover --platform branch in image-size-logic tests
Prior tests only exercised the local docker image inspect path. The
--platform branch (imagetools inspect) had zero coverage, meaning the
REV5 silent-pass regression would not have been caught by CI.
Added 5 mock-based test cases for the --platform branch:
- pass when platform-scoped compressed size < budget
- fail when platform-scoped compressed size > budget
- fail (exit 1) when imagetools inspect errors (REV5 guard)
- fail (exit 1) when reported size is "0" (REV5 guard)
- fail (exit 1) when size output is empty (REV5 guard)
Mocks follow the existing pattern (override docker in PATH with a temp
wrapper), extended to handle buildx imagetools inspect subcommand.
Resolves REV6 (reviewer loop 2, PR #1261).
* fix(test): compose-parity image_name() handles \${VAR:-default} syntax
After parameterizing compose.yaml's image field with \${CCS_IMAGE:-...},
the image_name() sed pipeline cut at the first colon in the shell variable
syntax (:-) instead of the tag separator, returning '\${CCS_IMAGE' and
failing the kaitranntt/ccs grep.
Added a sed step to unwrap \${VAR:-default} by extracting just the default
value before stripping the tag. Existing plain image: name:tag references
are unaffected.
This commit is contained in:
1 parent
78004746be
commit
adf5a836fc
4 files changed
+93
-6
No files matched your search
@@ -25,14 +25,19 @@ ok() { printf '[OK] %s\n' "$*"; }
|
||||
fail() { printf '[X] %s\n' "$*" >&2; fail=1; }
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Helper: extract image name (repo path without tag) for a service
|
||||
# Helper: extract image name (repo path without tag) for a service.
|
||||
# Handles both plain image references and ${VAR:-default} shell variable
|
||||
# syntax (e.g. image: ${CCS_IMAGE:-ghcr.io/kaitranntt/ccs:latest}).
|
||||
# ---------------------------------------------------------------------------
|
||||
image_name() {
|
||||
local file="$1" service="$2"
|
||||
# Match lines like: image: ghcr.io/owner/repo:tag or image: name:tag
|
||||
# Match lines like:
|
||||
# image: ghcr.io/owner/repo:tag
|
||||
# image: ${CCS_IMAGE:-ghcr.io/owner/repo:tag}
|
||||
grep -A 50 "^ ${service}:" "$file" \
|
||||
| grep -m1 '^\s*image:' \
|
||||
| sed 's/.*image:\s*//' \
|
||||
| sed 's/\${[^:-]*:-\([^}]*\)}/\1/' \
|
||||
| sed 's/:.*//' \
|
||||
| tr -d ' '
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user