From fb4d71dfdb3275cb5a209b5fc26d4b91d66ac1e1 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 11:41:03 +0800 Subject: [PATCH 01/16] chore: require go 1.25.3 --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 2ffb13a8..642b8e8b 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/oullin -go 1.25.1 +go 1.25.3 require ( github.com/DATA-DOG/go-sqlmock v1.5.2 From 86a2dd60171b4e46a3e0e89f2846cd24329cd818 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 11:45:48 +0800 Subject: [PATCH 02/16] chore: align ci with go 1.25.3 --- .github/workflows/gofmt.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gofmt.yml b/.github/workflows/gofmt.yml index a929252e..5ceaec66 100644 --- a/.github/workflows/gofmt.yml +++ b/.github/workflows/gofmt.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: [1.25.1] + go-version: [1.25.3] steps: - name: Checkout code diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0be9e2d4..7683ba38 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: ['1.25.1'] + go-version: ['1.25.3'] steps: - uses: actions/setup-go@v5 From 674cd11c22cefdc86cd3b1190cc2a5f5364fb3b4 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 11:48:40 +0800 Subject: [PATCH 03/16] Expand gofmt matrix --- .github/workflows/gofmt.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gofmt.yml b/.github/workflows/gofmt.yml index 5ceaec66..e5442d4a 100644 --- a/.github/workflows/gofmt.yml +++ b/.github/workflows/gofmt.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: [1.25.3] + go-version: [1.25.2, 1.25.3] steps: - name: Checkout code From c77f320a07185b30682b8031e5b243db68dd95e7 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 12:12:07 +0800 Subject: [PATCH 04/16] Add Go 1.25.3 toolchain checksums --- go.sum | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go.sum b/go.sum index f002e375..d46fd824 100644 --- a/go.sum +++ b/go.sum @@ -204,6 +204,8 @@ golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/toolchain v0.0.1-go1.25.3.linux-amd64 h1:l1j7thEwECqRKJdvlmb+P9A1eO0eOdB1HY0w82R2Lqg= +golang.org/toolchain v0.0.1-go1.25.3.linux-amd64/go.mod h1:WFKMzhhI3fReEtRyJJWmbann7Jcasfj9o/ToQXzeOuE= google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b h1:ULiyYQ0FdsJhwwZUwbaXpZF5yUE3h+RA+gxvBu37ucc= google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:oDOGiMSXHL4sDTJvFvIB9nRQCGdLP1o/iVaqQK8zB+M= google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b h1:zPKJod4w6F1+nRGDI9ubnXYhU9NSWoFAijkHkUXeTK8= From bf01ffd279bd9bb55add7d7c20d8a0c6f1f09f89 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 12:12:13 +0800 Subject: [PATCH 05/16] Expand Go test matrix --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7683ba38..f74f9377 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: ['1.25.3'] + go-version: [1.25.2, 1.25.3] steps: - uses: actions/setup-go@v5 From d86a15aff133853136af2ea015a60b4cd730d6b0 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 12:27:21 +0800 Subject: [PATCH 06/16] Restore Go 1.25.2 compatibility --- go.mod | 2 +- go.sum | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 642b8e8b..9dc28252 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/oullin -go 1.25.3 +go 1.25.2 require ( github.com/DATA-DOG/go-sqlmock v1.5.2 diff --git a/go.sum b/go.sum index d46fd824..f002e375 100644 --- a/go.sum +++ b/go.sum @@ -204,8 +204,6 @@ golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= -golang.org/toolchain v0.0.1-go1.25.3.linux-amd64 h1:l1j7thEwECqRKJdvlmb+P9A1eO0eOdB1HY0w82R2Lqg= -golang.org/toolchain v0.0.1-go1.25.3.linux-amd64/go.mod h1:WFKMzhhI3fReEtRyJJWmbann7Jcasfj9o/ToQXzeOuE= google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b h1:ULiyYQ0FdsJhwwZUwbaXpZF5yUE3h+RA+gxvBu37ucc= google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:oDOGiMSXHL4sDTJvFvIB9nRQCGdLP1o/iVaqQK8zB+M= google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b h1:zPKJod4w6F1+nRGDI9ubnXYhU9NSWoFAijkHkUXeTK8= From c6f2f3199279232a93831dc9912df141c918a5aa Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 12:39:02 +0800 Subject: [PATCH 07/16] Restore Go 1.25.3 directive --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 9dc28252..642b8e8b 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/oullin -go 1.25.2 +go 1.25.3 require ( github.com/DATA-DOG/go-sqlmock v1.5.2 From 3cf478b31d56c8c633728912774540b2d6832661 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 13:25:39 +0800 Subject: [PATCH 08/16] chore: align docker builds with go1.25.3 --- docker-compose.yml | 5 +++++ docker/dockerfile-api | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 6a0ee3d8..5dc4f07e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -87,6 +87,9 @@ services: context: . dockerfile: ./docker/dockerfile-api target: builder + args: + - GO_VERSION=1.25.3 + - GO_IMAGE_VARIANT=alpine3.22 image: api-api-runner volumes: - .:/app @@ -137,6 +140,8 @@ services: - APP_GROUP=${ENV_DOCKER_USER_GROUP} - APP_DIR=/app - BINARY_NAME=oullin_api + - GO_VERSION=1.25.3 + - GO_IMAGE_VARIANT=alpine3.22 container_name: oullin_api restart: unless-stopped secrets: diff --git a/docker/dockerfile-api b/docker/dockerfile-api index 5a4f7547..f47c25fc 100644 --- a/docker/dockerfile-api +++ b/docker/dockerfile-api @@ -14,6 +14,8 @@ ARG BUILD_TAGS="posts,experience,profile,projects,social,talks,gus,gocanto" ARG BINARY_NAME=oullin_api # Base image digests +ARG GO_VERSION=1.25.3 +ARG GO_IMAGE_VARIANT=alpine3.22 ARG GOLANG_ALPINE_DIGEST=sha256:c3dc5d5e8cf34ccb2172fb8d1aa399aa13cd8b60d27bba891d18e3b436a0c5f6 ARG ALPINE_DIGEST=sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 @@ -38,7 +40,7 @@ ARG TZ=Asia/Singapore # ---------------------------------------------------------------------------------------------------------------------- # BUILDER STAGE # ---------------------------------------------------------------------------------------------------------------------- -FROM golang:1.25.3-alpine3.22@${GOLANG_ALPINE_DIGEST} AS builder +FROM golang:${GO_VERSION}-${GO_IMAGE_VARIANT}@${GOLANG_ALPINE_DIGEST} AS builder # Bring in the build args needed in this stage. ARG APP_DIR From 2fec31d762f5f9225aa5f3ab2cf0ef2298767ea8 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 13:34:03 +0800 Subject: [PATCH 09/16] Parameterize final-stage Alpine base --- docker/dockerfile-api | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/dockerfile-api b/docker/dockerfile-api index f47c25fc..9566b002 100644 --- a/docker/dockerfile-api +++ b/docker/dockerfile-api @@ -17,6 +17,7 @@ ARG BINARY_NAME=oullin_api ARG GO_VERSION=1.25.3 ARG GO_IMAGE_VARIANT=alpine3.22 ARG GOLANG_ALPINE_DIGEST=sha256:c3dc5d5e8cf34ccb2172fb8d1aa399aa13cd8b60d27bba891d18e3b436a0c5f6 +ARG ALPINE_VERSION=3.22 ARG ALPINE_DIGEST=sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 # Non-root user/group settings. @@ -88,7 +89,7 @@ RUN go build \ # ---------------------------------------------------------------------------------------------------------------------- # FINAL STAGE # ---------------------------------------------------------------------------------------------------------------------- -FROM alpine:3.22@${ALPINE_DIGEST} +FROM alpine:${ALPINE_VERSION}@${ALPINE_DIGEST} # Bring in the runtime args. ARG APP_USER From 46b330409757b0fc19ec95329bd4706c2d4a0994 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 13:40:40 +0800 Subject: [PATCH 10/16] Revert go build args in compose --- docker-compose.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 5dc4f07e..6a0ee3d8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -87,9 +87,6 @@ services: context: . dockerfile: ./docker/dockerfile-api target: builder - args: - - GO_VERSION=1.25.3 - - GO_IMAGE_VARIANT=alpine3.22 image: api-api-runner volumes: - .:/app @@ -140,8 +137,6 @@ services: - APP_GROUP=${ENV_DOCKER_USER_GROUP} - APP_DIR=/app - BINARY_NAME=oullin_api - - GO_VERSION=1.25.3 - - GO_IMAGE_VARIANT=alpine3.22 container_name: oullin_api restart: unless-stopped secrets: From 77d80c4c46d8393473a13afaf25c92bc87707f44 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 14:00:39 +0800 Subject: [PATCH 11/16] Align tooling with Go 1.25.3 --- .github/workflows/tests.yml | 2 ++ docker-compose.yml | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f74f9377..dab48410 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,6 +12,8 @@ jobs: (github.event_name == 'pull_request' && (github.event.pull_request.draft == false || (github.event.action == 'labeled' && contains(github.event.pull_request.labels.*.name, 'testing')))) runs-on: ubuntu-latest + env: + GOTOOLCHAIN: go1.25.3 strategy: matrix: go-version: [1.25.2, 1.25.3] diff --git a/docker-compose.yml b/docker-compose.yml index 6a0ee3d8..2861c382 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -87,6 +87,12 @@ services: context: . dockerfile: ./docker/dockerfile-api target: builder + args: + - GO_VERSION=1.25.3 + - GO_IMAGE_VARIANT=alpine3.22 + - GOLANG_ALPINE_DIGEST=sha256:c3dc5d5e8cf34ccb2172fb8d1aa399aa13cd8b60d27bba891d18e3b436a0c5f6 + - ALPINE_VERSION=3.22 + - ALPINE_DIGEST=sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 image: api-api-runner volumes: - .:/app @@ -131,6 +137,11 @@ services: context: . dockerfile: ./docker/dockerfile-api args: + - GO_VERSION=1.25.3 + - GO_IMAGE_VARIANT=alpine3.22 + - GOLANG_ALPINE_DIGEST=sha256:c3dc5d5e8cf34ccb2172fb8d1aa399aa13cd8b60d27bba891d18e3b436a0c5f6 + - ALPINE_VERSION=3.22 + - ALPINE_DIGEST=sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 - APP_VERSION=0.0.0.1 - APP_HOST_PORT=${ENV_HTTP_PORT} - APP_USER=${ENV_DOCKER_USER} From 44ab2526d1cc3fa7f0eb3c756815ab39aa3afb0e Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 14:13:28 +0800 Subject: [PATCH 12/16] Force Go toolchain via API builder image --- .github/workflows/tests.yml | 2 -- docker/dockerfile-api | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index dab48410..f74f9377 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,8 +12,6 @@ jobs: (github.event_name == 'pull_request' && (github.event.pull_request.draft == false || (github.event.action == 'labeled' && contains(github.event.pull_request.labels.*.name, 'testing')))) runs-on: ubuntu-latest - env: - GOTOOLCHAIN: go1.25.3 strategy: matrix: go-version: [1.25.2, 1.25.3] diff --git a/docker/dockerfile-api b/docker/dockerfile-api index 9566b002..5e552a6a 100644 --- a/docker/dockerfile-api +++ b/docker/dockerfile-api @@ -16,6 +16,7 @@ ARG BINARY_NAME=oullin_api # Base image digests ARG GO_VERSION=1.25.3 ARG GO_IMAGE_VARIANT=alpine3.22 +ARG GO_TOOLCHAIN=go1.25.3 ARG GOLANG_ALPINE_DIGEST=sha256:c3dc5d5e8cf34ccb2172fb8d1aa399aa13cd8b60d27bba891d18e3b436a0c5f6 ARG ALPINE_VERSION=3.22 ARG ALPINE_DIGEST=sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 @@ -44,6 +45,8 @@ ARG TZ=Asia/Singapore FROM golang:${GO_VERSION}-${GO_IMAGE_VARIANT}@${GOLANG_ALPINE_DIGEST} AS builder # Bring in the build args needed in this stage. +ARG GO_TOOLCHAIN +ENV GOTOOLCHAIN=${GO_TOOLCHAIN} ARG APP_DIR ARG BINARY_NAME ARG APP_VERSION From bf550e59d1c694a5791d9c3ca85c02a8d0069de1 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 14:20:08 +0800 Subject: [PATCH 13/16] Revert docker-compose build args --- docker-compose.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2861c382..6a0ee3d8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -87,12 +87,6 @@ services: context: . dockerfile: ./docker/dockerfile-api target: builder - args: - - GO_VERSION=1.25.3 - - GO_IMAGE_VARIANT=alpine3.22 - - GOLANG_ALPINE_DIGEST=sha256:c3dc5d5e8cf34ccb2172fb8d1aa399aa13cd8b60d27bba891d18e3b436a0c5f6 - - ALPINE_VERSION=3.22 - - ALPINE_DIGEST=sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 image: api-api-runner volumes: - .:/app @@ -137,11 +131,6 @@ services: context: . dockerfile: ./docker/dockerfile-api args: - - GO_VERSION=1.25.3 - - GO_IMAGE_VARIANT=alpine3.22 - - GOLANG_ALPINE_DIGEST=sha256:c3dc5d5e8cf34ccb2172fb8d1aa399aa13cd8b60d27bba891d18e3b436a0c5f6 - - ALPINE_VERSION=3.22 - - ALPINE_DIGEST=sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 - APP_VERSION=0.0.0.1 - APP_HOST_PORT=${ENV_HTTP_PORT} - APP_USER=${ENV_DOCKER_USER} From 18fe15652b9005dc0f1eec87ca404bd6d18facd7 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 14:20:15 +0800 Subject: [PATCH 14/16] Align CI Go matrix with 1.25.3 --- .github/workflows/gofmt.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gofmt.yml b/.github/workflows/gofmt.yml index e5442d4a..5ceaec66 100644 --- a/.github/workflows/gofmt.yml +++ b/.github/workflows/gofmt.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: [1.25.2, 1.25.3] + go-version: [1.25.3] steps: - name: Checkout code diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f74f9377..5d9807ae 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: [1.25.2, 1.25.3] + go-version: [1.25.3] steps: - uses: actions/setup-go@v5 From 6d658f920c0a422906774a5fb63653d102a9856e Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 14:35:54 +0800 Subject: [PATCH 15/16] Add Go 1.25.3 toolchain checksums --- go.sum | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go.sum b/go.sum index f002e375..81962bc9 100644 --- a/go.sum +++ b/go.sum @@ -185,6 +185,8 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/toolchain v0.0.1-go1.25.3.linux-amd64 h1:OsvRiFtt0A9JsTaoQsnFK4wKOOAY2UtJvkOT+Djl7tQ= +golang.org/toolchain v0.0.1-go1.25.3.linux-amd64/go.mod h1:c/4eKWFBYMD/i1j7ipNwtrHQP02jj74611NzmDqwkJE= golang.org/x/image v0.32.0 h1:6lZQWq75h7L5IWNk0r+SCpUJ6tUVd3v4ZHnbRKLkUDQ= golang.org/x/image v0.32.0/go.mod h1:/R37rrQmKXtO6tYXAjtDLwQgFLHmhW+V6ayXlxzP2Pc= golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= From 47e4584cf370f422e480028865c5130a77f5e996 Mon Sep 17 00:00:00 2001 From: Gus Date: Thu, 16 Oct 2025 14:42:51 +0800 Subject: [PATCH 16/16] chore: update alpine base digest --- docker/dockerfile-api | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/dockerfile-api b/docker/dockerfile-api index 5e552a6a..ac4869a3 100644 --- a/docker/dockerfile-api +++ b/docker/dockerfile-api @@ -19,7 +19,7 @@ ARG GO_IMAGE_VARIANT=alpine3.22 ARG GO_TOOLCHAIN=go1.25.3 ARG GOLANG_ALPINE_DIGEST=sha256:c3dc5d5e8cf34ccb2172fb8d1aa399aa13cd8b60d27bba891d18e3b436a0c5f6 ARG ALPINE_VERSION=3.22 -ARG ALPINE_DIGEST=sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 +ARG ALPINE_DIGEST=sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1 # Non-root user/group settings. ARG APP_USER=appuser