From 5daf2278cac02a2b28d1ac6a4931049f7b1df8d2 Mon Sep 17 00:00:00 2001 From: Mark Mennell Date: Fri, 11 Sep 2026 10:11:10 +0800 Subject: [PATCH 1/2] Upgrade to Go 1.27 and standardize CI badges --- .github/workflows/integration-test.yml | 11 ++++++++--- README.md | 5 +++-- docker/fmsg-webapi/Dockerfile | 2 +- docker/fmsgd/Dockerfile | 2 +- docker/fmsgid/Dockerfile | 2 +- test/run-tests-podman.sh | 2 +- test/run-tests.sh | 4 ++-- 7 files changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index e20ddf9..bb2a923 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -2,6 +2,8 @@ name: Integration Test run-name: "Integration Test (${{ inputs.fmsgd_ref }})" on: + push: + branches: [main] pull_request: branches: [main] workflow_dispatch: @@ -23,16 +25,19 @@ on: required: false default: 'main' +permissions: + contents: read + jobs: integration-test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v7 with: - go-version: "stable" + go-version: "1.27.x" - name: Select component refs id: refs diff --git a/README.md b/README.md index 01a6360..b179a41 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -[![Integration Test](https://github.com/markmnl/fmsg-docker/actions/workflows/integration-test.yml/badge.svg)](https://github.com/markmnl/fmsg-docker/actions/workflows/integration-test.yml) +[![Integration Test](https://github.com/markmnl/fmsg-docker/actions/workflows/integration-test.yml/badge.svg?branch=main)](https://github.com/markmnl/fmsg-docker/actions/workflows/integration-test.yml?query=branch%3Amain) +[![Go 1.27+](https://img.shields.io/badge/Go-1.27%2B-00ADD8?logo=go&logoColor=white)](https://go.dev/dl/) # fmsg-docker @@ -137,7 +138,7 @@ The compose stack uses Docker named volumes: End-to-end tests that spin up two full stacks (`hairpin.local` and `example.com`) on a shared Docker network and exchange messages between them using [fmsg-cli](https://github.com/markmnl/fmsg-cli). Test 008 drives [fmsg-mcp-claude](https://github.com/markmnl/fmsg-mcp-claude) over stdio and test 014 drives [fmsg-mcp](https://github.com/markmnl/fmsg-mcp) over Streamable HTTP (`FMSG_MCP_NPM_SPEC` picks the version, default `@markmnl/fmsg-mcp@latest`). The test runner enables fmsg-webapi API-key auth, creates delegated API keys for the test actors during setup, and passes them to fmsg-cli with `FMSG_API_KEY`. -**Prerequisites:** Docker, docker compose, Go 1.24+, curl, jq, Node.js 22+ (test 014 runs the published `@markmnl/fmsg-mcp` with `npx`). +**Prerequisites:** Docker, docker compose, Go 1.27+, curl, jq, Node.js 22+ (test 014 runs the published `@markmnl/fmsg-mcp` with `npx`). ```bash # Run tests (starts stacks fresh) diff --git a/docker/fmsg-webapi/Dockerfile b/docker/fmsg-webapi/Dockerfile index 32a17d0..37b23b8 100644 --- a/docker/fmsg-webapi/Dockerfile +++ b/docker/fmsg-webapi/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.25 AS builder +FROM golang:1.27 AS builder ARG FMSG_WEBAPI_REF=main ARG CACHEBUST diff --git a/docker/fmsgd/Dockerfile b/docker/fmsgd/Dockerfile index 1d7edbb..aee1092 100644 --- a/docker/fmsgd/Dockerfile +++ b/docker/fmsgd/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.25 AS builder +FROM golang:1.27 AS builder ARG FMSGD_REF=main ARG CACHEBUST diff --git a/docker/fmsgid/Dockerfile b/docker/fmsgid/Dockerfile index 89fb92c..9a98e34 100644 --- a/docker/fmsgid/Dockerfile +++ b/docker/fmsgid/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.25 AS builder +FROM golang:1.27 AS builder ARG FMSGID_REF=main ARG CACHEBUST diff --git a/test/run-tests-podman.sh b/test/run-tests-podman.sh index 7c615e7..67110e9 100755 --- a/test/run-tests-podman.sh +++ b/test/run-tests-podman.sh @@ -2,7 +2,7 @@ # ============================================================= # Run the fmsg integration tests using podman instead of docker. # -# Prerequisites: podman, podman-compose (or docker-compose) go (1.24+), curl +# Prerequisites: podman, podman-compose (or docker-compose) go (1.27+), curl # # This shims a `docker` executable onto PATH that execs podman, then # delegates straight to run-tests.sh so the two runners stay in sync. diff --git a/test/run-tests.sh b/test/run-tests.sh index c906f2e..292330e 100755 --- a/test/run-tests.sh +++ b/test/run-tests.sh @@ -2,7 +2,7 @@ # ============================================================= # Run the fmsg integration tests. # -# Prerequisites: docker, docker compose, go (1.24+), curl +# Prerequisites: docker, docker compose, go (1.27+), curl # # Usage: # ./test/run-tests.sh # run tests (start stacks fresh) @@ -252,7 +252,7 @@ if [ "$SKIP_START" != "true" ]; then echo "==> Ensuring public base images are available..." # Fully-qualified names: podman's short-name resolution wants a TTY prompt # when an alias is missing, which kills non-interactive runs. - for image in docker.io/library/debian:bookworm-slim docker.io/library/golang:1.25 docker.io/library/postgres:18-alpine docker.io/certbot/certbot:latest; do + for image in docker.io/library/debian:bookworm-slim docker.io/library/golang:1.27 docker.io/library/postgres:18-alpine docker.io/certbot/certbot:latest; do if ! docker image inspect "$image" >/dev/null 2>&1; then docker pull "$image" fi From 1c685d9e8b170205f42e283cab8479d1dea704aa Mon Sep 17 00:00:00 2001 From: Mark Mennell Date: Fri, 11 Sep 2026 10:14:47 +0800 Subject: [PATCH 2/2] Translate container names for Podman log assertions --- test/run-tests-podman.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/run-tests-podman.sh b/test/run-tests-podman.sh index 67110e9..8ff351a 100755 --- a/test/run-tests-podman.sh +++ b/test/run-tests-podman.sh @@ -29,8 +29,8 @@ # podman-compose also names containers "__" # (underscores) whereas docker compose v2 names them # "--" (hyphens). run-tests.sh hardcodes the -# docker-compose-v2-style names for `docker exec` targets, so the shim -# rewrites those to podman-compose's naming for that subcommand only. +# docker-compose-v2-style names for `docker exec` and `docker logs` targets, +# so the shim rewrites those to podman-compose's naming for both subcommands. # # Usage: same as run-tests.sh, e.g. # ./test/run-tests-podman.sh @@ -117,7 +117,7 @@ cat > "$SHIM_DIR/docker" <