@@ -17,19 +17,18 @@ jobs:
1717 runs-on : ubuntu-latest
1818 steps :
1919 - name : Checkout
20- uses : actions/checkout@v4
20+ uses : actions/checkout@v6
2121
2222 - name : Setup Go
23- uses : actions/setup-go@v5
23+ uses : actions/setup-go@v6
2424 with :
2525 go-version-file : go.mod
2626
27+ - name : Install golangci-lint
28+ run : go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.64.8
29+
2730 - name : golangci-lint
28- uses : golangci/golangci-lint-action@v6
29- with :
30- version : latest
31- install-mode : goinstall
32- args : --timeout 3m0s
31+ run : golangci-lint run --timeout 3m0s
3332 test :
3433 strategy :
3534 fail-fast : false
@@ -38,34 +37,43 @@ jobs:
3837 runs-on : ${{ matrix.platform }}
3938 steps :
4039 - name : Checkout
41- uses : actions/checkout@v4
40+ uses : actions/checkout@v6
4241
4342 - name : Setup Go with cache
44- uses : actions/setup-go@v5
43+ uses : actions/setup-go@v6
4544 with :
4645 cache : true
4746 go-version-file : go.mod
4847
4948 - name : Test
5049 run : make test
50+
51+ - name : Smoke test - Geyserlite Windows auto-download starts
52+ if : matrix.platform == 'windows-latest'
53+ run : go test ./pkg/edition/bedrock/geyser -tags=geyserlite_smoke -run TestLiteManagedRunnerWindowsAutoDownloadSmoke -count=1 -timeout 6m -v
5154 # Regression test for https://github.com/minekube/gate/issues/697:
5255 # The published images crashed with "exec /gate: no such file or directory"
5356 # because the gate binary is dynamically linked (the geyserlite dependency
5457 # pulls in github.com/ebitengine/purego, which imports libdl.so.2 via
5558 # //go:cgo_import_dynamic even with CGO_ENABLED=0) but the runtime base image
5659 # had no glibc dynamic loader. This job builds the actual images and runs the
57- # binary so a broken runtime base fails CI instead of shipping.
60+ # binary and starts managed Bedrock on both architectures so broken runtime
61+ # dependencies or cache paths fail CI instead of shipping.
5862 docker-smoke :
59- runs-on : ubuntu-latest
63+ strategy :
64+ fail-fast : false
65+ matrix :
66+ runner : [ubuntu-latest, ubuntu-24.04-arm]
67+ runs-on : ${{ matrix.runner }}
6068 steps :
6169 - name : Checkout
62- uses : actions/checkout@v4
70+ uses : actions/checkout@v6
6371
6472 - name : Set up docker buildx
65- uses : docker/setup-buildx-action@v3
73+ uses : docker/setup-buildx-action@v4
6674
6775 - name : Build gate image (host arch, load)
68- uses : docker/build-push-action@v6
76+ uses : docker/build-push-action@v7
6977 with :
7078 context : .
7179 file : ./Dockerfile
8189 echo "$out"
8290 echo "$out" | grep -q "gate version smoke-test"
8391
92+ - name : Smoke test - managed Bedrock starts in read-only distroless image
93+ run : |
94+ cid=$(docker run -d --read-only --tmpfs /tmp \
95+ -v "$PWD/.github/testdata/managed-bedrock.yml:/config.yml:ro" \
96+ gate:smoke --config /config.yml)
97+ trap 'docker logs "$cid" 2>&1 || true; docker rm -f "$cid" >/dev/null 2>&1 || true' EXIT
98+
99+ for _ in $(seq 1 180); do
100+ logs=$(docker logs "$cid" 2>&1)
101+ if grep -q "geyser integration started" <<<"$logs"; then
102+ exit 0
103+ fi
104+ if [ "$(docker inspect -f '{{.State.Running}}' "$cid")" != "true" ]; then
105+ exit 1
106+ fi
107+ sleep 1
108+ done
109+ exit 1
110+
84111 - name : Build jre variant image (host arch, load)
85- uses : docker/build-push-action@v6
112+ uses : docker/build-push-action@v7
86113 with :
87114 context : .
88115 file : ./Dockerfile
@@ -109,13 +136,13 @@ jobs:
109136 image_latest : ${{ steps.image-ref.outputs.image_latest }}
110137 steps :
111138 - name : Checkout
112- uses : actions/checkout@v4
139+ uses : actions/checkout@v6
113140
114141 - name : Set up docker buildx
115- uses : docker/setup-buildx-action@v3
142+ uses : docker/setup-buildx-action@v4
116143
117144 - name : Login to Container registry
118- uses : docker/login-action@v3
145+ uses : docker/login-action@v4
119146 with :
120147 registry : ${{ env.REGISTRY }}
121148 username : ${{ github.actor }}
@@ -157,7 +184,7 @@ jobs:
157184 echo "Version: ${VERSION}" >> $GITHUB_STEP_SUMMARY
158185
159186 - name : Build and push docker image
160- uses : docker/build-push-action@v6
187+ uses : docker/build-push-action@v7
161188 with :
162189 context : .
163190 file : ./Dockerfile
@@ -174,7 +201,7 @@ jobs:
174201 ${{ steps.image-ref.outputs.image_version }}
175202
176203 - name : Build and push docker image (jre variant)
177- uses : docker/build-push-action@v6
204+ uses : docker/build-push-action@v7
178205 with :
179206 context : .
180207 file : ./Dockerfile
@@ -196,18 +223,18 @@ jobs:
196223 runs-on : ubuntu-latest
197224 steps :
198225 - name : Checkout
199- uses : actions/checkout@v4
226+ uses : actions/checkout@v6
200227 with :
201228 fetch-depth : 0
202229
203230 - name : Setup Go
204- uses : actions/setup-go@v5
231+ uses : actions/setup-go@v6
205232 with :
206233 cache : true
207234 go-version-file : go.mod
208235
209236 - name : Run GoReleaser
210- uses : goreleaser/goreleaser-action@v6
237+ uses : goreleaser/goreleaser-action@v7
211238 with :
212239 version : latest
213240 args : release --clean
0 commit comments