add traced bridge version output
This commit is contained in:
parent
cfd19f6626
commit
f7b8076a84
@ -8,7 +8,12 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
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
|
# Stage 2 - minimal runtime image
|
||||||
FROM debian:bookworm-slim
|
FROM debian:bookworm-slim
|
||||||
|
|||||||
14
main.go
14
main.go
@ -11,6 +11,12 @@ import (
|
|||||||
"xworkmate-bridge/internal/toolbridge"
|
"xworkmate-bridge/internal/toolbridge"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
buildCommit = ""
|
||||||
|
buildVersion = "v1.0-beta2"
|
||||||
|
buildDate = ""
|
||||||
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if len(os.Args) > 1 {
|
if len(os.Args) > 1 {
|
||||||
switch os.Args[1] {
|
switch os.Args[1] {
|
||||||
@ -52,13 +58,11 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func printBridgeVersionInfo() error {
|
func printBridgeVersionInfo() error {
|
||||||
info := acp.ParseImageVersionInfo(os.Getenv("IMAGE"))
|
|
||||||
payload := map[string]any{
|
payload := map[string]any{
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"image": info.ImageRef,
|
"commit": buildCommit,
|
||||||
"tag": info.Tag,
|
"version": buildVersion,
|
||||||
"commit": info.Commit,
|
"build-date": buildDate,
|
||||||
"version": info.Version,
|
|
||||||
}
|
}
|
||||||
encoded, err := json.Marshal(payload)
|
encoded, err := json.Marshal(payload)
|
||||||
if err != nil {
|
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) {
|
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)
|
output := captureStdout(t, printBridgeVersionInfo)
|
||||||
|
|
||||||
@ -144,25 +151,35 @@ func TestPrintBridgeVersionInfoMatchesPingContract(t *testing.T) {
|
|||||||
if payload["status"] != "ok" {
|
if payload["status"] != "ok" {
|
||||||
t.Fatalf("expected status ok, got %#v", payload["status"])
|
t.Fatalf("expected status ok, got %#v", payload["status"])
|
||||||
}
|
}
|
||||||
if payload["image"] != "ghcr.io/x-evor/xworkmate-bridge:0123456789abcdef0123456789abcdef01234567" {
|
if payload["commit"] != "cfd19f6" {
|
||||||
t.Fatalf("unexpected image ref: %#v", payload["image"])
|
|
||||||
}
|
|
||||||
if payload["tag"] != "0123456789abcdef0123456789abcdef01234567" {
|
|
||||||
t.Fatalf("unexpected tag: %#v", payload["tag"])
|
|
||||||
}
|
|
||||||
if payload["commit"] != "0123456789abcdef0123456789abcdef01234567" {
|
|
||||||
t.Fatalf("unexpected commit: %#v", payload["commit"])
|
t.Fatalf("unexpected commit: %#v", payload["commit"])
|
||||||
}
|
}
|
||||||
if payload["version"] != "0123456789abcdef0123456789abcdef01234567" {
|
if payload["version"] != "v1.0-beta2" {
|
||||||
t.Fatalf("unexpected version: %#v", payload["version"])
|
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) {
|
func TestPrintBridgeVersionInfoUsesBuildVariables(t *testing.T) {
|
||||||
t.Setenv("IMAGE", "")
|
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)
|
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)
|
t.Fatalf("unexpected output: %q", output)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,9 @@ mkdir -p "$OUTPUT_DIR"
|
|||||||
echo "Building xworkmate-go-core from xworkmate-bridge..."
|
echo "Building xworkmate-go-core from xworkmate-bridge..."
|
||||||
(
|
(
|
||||||
cd "$ROOT_DIR"
|
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"
|
chmod +x "$OUTPUT_PATH"
|
||||||
|
|||||||
@ -4,4 +4,7 @@ set -euo pipefail
|
|||||||
ARTIFACT_DIR="${1:-dist}"
|
ARTIFACT_DIR="${1:-dist}"
|
||||||
mkdir -p "${ARTIFACT_DIR}"
|
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