add traced bridge version output
This commit is contained in:
parent
cfd19f6626
commit
f7b8076a84
@ -8,7 +8,12 @@ RUN go mod download
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o /out/xworkmate-bridge .
|
||||
RUN set -euo pipefail; \
|
||||
build_commit="$(git rev-parse --short HEAD)"; \
|
||||
build_date="$(git log -1 --format=%cI)"; \
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
|
||||
-ldflags="-s -w -X main.buildCommit=${build_commit} -X main.buildVersion=v1.0-beta2 -X main.buildDate=${build_date}" \
|
||||
-o /out/xworkmate-bridge .
|
||||
|
||||
# Stage 2 - minimal runtime image
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
14
main.go
14
main.go
@ -11,6 +11,12 @@ import (
|
||||
"xworkmate-bridge/internal/toolbridge"
|
||||
)
|
||||
|
||||
var (
|
||||
buildCommit = ""
|
||||
buildVersion = "v1.0-beta2"
|
||||
buildDate = ""
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 {
|
||||
switch os.Args[1] {
|
||||
@ -52,13 +58,11 @@ func main() {
|
||||
}
|
||||
|
||||
func printBridgeVersionInfo() error {
|
||||
info := acp.ParseImageVersionInfo(os.Getenv("IMAGE"))
|
||||
payload := map[string]any{
|
||||
"status": "ok",
|
||||
"image": info.ImageRef,
|
||||
"tag": info.Tag,
|
||||
"commit": info.Commit,
|
||||
"version": info.Version,
|
||||
"commit": buildCommit,
|
||||
"version": buildVersion,
|
||||
"build-date": buildDate,
|
||||
}
|
||||
encoded, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
|
||||
41
main_test.go
41
main_test.go
@ -133,7 +133,14 @@ func TestRunClaudeReviewSurfacesNonJSONStdout(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestPrintBridgeVersionInfoMatchesPingContract(t *testing.T) {
|
||||
t.Setenv("IMAGE", "ghcr.io/x-evor/xworkmate-bridge:0123456789abcdef0123456789abcdef01234567")
|
||||
buildCommit = "cfd19f6"
|
||||
buildVersion = "v1.0-beta2"
|
||||
buildDate = "2026-04-22T12:23:28+08:00"
|
||||
t.Cleanup(func() {
|
||||
buildCommit = ""
|
||||
buildVersion = "v1.0-beta2"
|
||||
buildDate = ""
|
||||
})
|
||||
|
||||
output := captureStdout(t, printBridgeVersionInfo)
|
||||
|
||||
@ -144,25 +151,35 @@ func TestPrintBridgeVersionInfoMatchesPingContract(t *testing.T) {
|
||||
if payload["status"] != "ok" {
|
||||
t.Fatalf("expected status ok, got %#v", payload["status"])
|
||||
}
|
||||
if payload["image"] != "ghcr.io/x-evor/xworkmate-bridge:0123456789abcdef0123456789abcdef01234567" {
|
||||
t.Fatalf("unexpected image ref: %#v", payload["image"])
|
||||
}
|
||||
if payload["tag"] != "0123456789abcdef0123456789abcdef01234567" {
|
||||
t.Fatalf("unexpected tag: %#v", payload["tag"])
|
||||
}
|
||||
if payload["commit"] != "0123456789abcdef0123456789abcdef01234567" {
|
||||
if payload["commit"] != "cfd19f6" {
|
||||
t.Fatalf("unexpected commit: %#v", payload["commit"])
|
||||
}
|
||||
if payload["version"] != "0123456789abcdef0123456789abcdef01234567" {
|
||||
if payload["version"] != "v1.0-beta2" {
|
||||
t.Fatalf("unexpected version: %#v", payload["version"])
|
||||
}
|
||||
if payload["build-date"] != "2026-04-22T12:23:28+08:00" {
|
||||
t.Fatalf("unexpected build-date: %#v", payload["build-date"])
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrintBridgeVersionInfoWithoutImageEnv(t *testing.T) {
|
||||
t.Setenv("IMAGE", "")
|
||||
func TestPrintBridgeVersionInfoUsesBuildVariables(t *testing.T) {
|
||||
buildCommit = "deadbee"
|
||||
buildVersion = "v1.0-beta2"
|
||||
buildDate = "2026-04-01T01:02:03+08:00"
|
||||
t.Cleanup(func() {
|
||||
buildCommit = ""
|
||||
buildVersion = "v1.0-beta2"
|
||||
buildDate = ""
|
||||
})
|
||||
|
||||
output := captureStdout(t, printBridgeVersionInfo)
|
||||
if !strings.Contains(output, `"status":"ok"`) {
|
||||
if !strings.Contains(output, `"commit":"deadbee"`) {
|
||||
t.Fatalf("unexpected output: %q", output)
|
||||
}
|
||||
if !strings.Contains(output, `"version":"v1.0-beta2"`) {
|
||||
t.Fatalf("unexpected output: %q", output)
|
||||
}
|
||||
if !strings.Contains(output, `"build-date":"2026-04-01T01:02:03+08:00"`) {
|
||||
t.Fatalf("unexpected output: %q", output)
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,7 +26,9 @@ mkdir -p "$OUTPUT_DIR"
|
||||
echo "Building xworkmate-go-core from xworkmate-bridge..."
|
||||
(
|
||||
cd "$ROOT_DIR"
|
||||
GO111MODULE=on go build -o "$OUTPUT_PATH" .
|
||||
build_commit="$(git rev-parse --short HEAD)"
|
||||
build_date="$(git log -1 --format=%cI)"
|
||||
GO111MODULE=on go build -ldflags "-X main.buildCommit=${build_commit} -X main.buildVersion=v1.0-beta2 -X main.buildDate=${build_date}" -o "$OUTPUT_PATH" .
|
||||
)
|
||||
|
||||
chmod +x "$OUTPUT_PATH"
|
||||
|
||||
@ -4,4 +4,7 @@ set -euo pipefail
|
||||
ARTIFACT_DIR="${1:-dist}"
|
||||
mkdir -p "${ARTIFACT_DIR}"
|
||||
|
||||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o "${ARTIFACT_DIR}/xworkmate-bridge" .
|
||||
build_commit="$(git rev-parse --short HEAD)"
|
||||
build_date="$(git log -1 --format=%cI)"
|
||||
|
||||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-X main.buildCommit=${build_commit} -X main.buildVersion=v1.0-beta2 -X main.buildDate=${build_date}" -o "${ARTIFACT_DIR}/xworkmate-bridge" .
|
||||
|
||||
Loading…
Reference in New Issue
Block a user