Files
Signage/ci/fetch-platform.sh
T
ekklesiaandClaude Opus 5.5 c1213dad08
CI / lint (pull_request) Successful in 19s
CI / typecheck (pull_request) Successful in 18s
CI / test (pull_request) Successful in 23s
CI / build (pull_request) Successful in 19s
CI / package (pull_request) Successful in 22s
CI / integration (pull_request) Successful in 8m47s
ci: pin the platform harness to the released Core v0.2.5
Integration still fetched Core at PR #92's head (5e9433d): the right
pin while that PR was in review, but it predates #94 (display
credential renewal) and #93 (the registry move), both in v0.2.5. Signage
now proves itself against the release it will run on.

The pin contract also accepts a release tag (refs/tags/vX.Y.Z) alongside
a pull request head or main, and the fetch compares the ref's commit
(^{commit}) so an annotated tag pins the same way a lightweight one
does. v0.2.5 is lightweight; that should not be a hidden requirement.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 00:05:15 -05:00

40 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Fetches the exact Ekklesia source revision Signage's external-package integration runs against.
# The ref is fetched only to make the pinned object reachable; the checkout is always by full SHA.
set -Eeuo pipefail
root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
out="$root/build/platform"
fail() {
echo "fetch-platform: $*" >&2
exit 1
}
(($# == 0)) || fail "this command takes no arguments."
pin() {
local value
value="$(sed -n "s/^$1=//p" "$root/ci/platform.env")"
[[ -n "$value" ]] || fail "ci/platform.env has no $1."
printf '%s' "$value"
}
repository="$(pin EKKLESIA_PLATFORM_REPOSITORY)"
ref="$(pin EKKLESIA_PLATFORM_REF)"
commit="$(pin EKKLESIA_PLATFORM_COMMIT)"
[[ "$commit" =~ ^[0-9a-f]{40}$ ]] || fail "EKKLESIA_PLATFORM_COMMIT must be a full commit SHA."
[[ "$ref" == refs/* ]] || fail "EKKLESIA_PLATFORM_REF must be a full Git ref."
rm -rf "$out"
mkdir -p "$out"
git -C "$out" init --quiet
git -C "$out" remote add origin "$repository"
git -C "$out" fetch --quiet --no-tags --depth=1 origin "+${ref}:refs/remotes/pinned" ||
fail "cannot fetch the pinned platform ref."
[[ "$(git -C "$out" rev-parse "refs/remotes/pinned^{commit}")" == "$commit" ]] ||
fail "the pinned ref does not resolve to EKKLESIA_PLATFORM_COMMIT."
git -C "$out" -c advice.detachedHead=false checkout --quiet --detach "$commit"
rm -rf "$out/.git"
echo "fetch-platform: Ekklesia ${commit}"