From b9612ba1c6b67a6e9fea5523274923ca5ae47ffc Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Thu, 26 Mar 2026 14:58:26 +1100 Subject: [PATCH 1/3] feat: include OS and arch in release binary name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Binary is now named node-lookup-linux-amd64 to match the target platform of the golang:latest build container. 💘 Generated with Crush Assisted-by: Claude Sonnet 4.6 via Crush --- .woodpecker/release.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml index adcf165..7361f2e 100644 --- a/.woodpecker/release.yaml +++ b/.woodpecker/release.yaml @@ -11,7 +11,8 @@ steps: image: golang:latest commands: - VERSION=${CI_COMMIT_TAG} - - go build -ldflags="-s -w -X main.version=${VERSION}" -o node-lookup ./... + - BINARY=node-lookup-linux-amd64 + - go build -ldflags="-s -w -X main.version=${VERSION}" -o ${BINARY} ./... depends_on: [test] - name: release @@ -30,7 +31,7 @@ steps: NOTES=$(git log --merges --pretty=format:"- %s") fi tea releases edit "${CI_COMMIT_TAG}" --note "${NOTES}" --login gitea --repo "${CI_REPO}" - tea releases assets create "${CI_COMMIT_TAG}" node-lookup --login gitea --repo "${CI_REPO}" + tea releases assets create "${CI_COMMIT_TAG}" node-lookup-linux-amd64 --login gitea --repo "${CI_REPO}" backend_options: kubernetes: serviceAccountName: default -- 2.47.3 From 9f924b67234a1ccea3bd28283a70cd15ce967121 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Thu, 26 Mar 2026 15:09:22 +1100 Subject: [PATCH 2/3] feat: build linux/darwin amd64/arm64 binaries in parallel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Each target gets its own step depending on test, so all four build concurrently. release step waits for all builds before uploading. 💘 Generated with Crush Assisted-by: Claude Sonnet 4.6 via Crush --- .woodpecker/release.yaml | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml index 7361f2e..eccb050 100644 --- a/.woodpecker/release.yaml +++ b/.woodpecker/release.yaml @@ -7,12 +7,28 @@ steps: commands: - go test ./... - - name: build + - name: build-linux-amd64 image: golang:latest commands: - - VERSION=${CI_COMMIT_TAG} - - BINARY=node-lookup-linux-amd64 - - go build -ldflags="-s -w -X main.version=${VERSION}" -o ${BINARY} ./... + - GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X main.version=${CI_COMMIT_TAG}" -o node-lookup-linux-amd64 ./... + depends_on: [test] + + - name: build-linux-arm64 + image: golang:latest + commands: + - GOOS=linux GOARCH=arm64 go build -ldflags="-s -w -X main.version=${CI_COMMIT_TAG}" -o node-lookup-linux-arm64 ./... + depends_on: [test] + + - name: build-darwin-amd64 + image: golang:latest + commands: + - GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w -X main.version=${CI_COMMIT_TAG}" -o node-lookup-darwin-amd64 ./... + depends_on: [test] + + - name: build-darwin-arm64 + image: golang:latest + commands: + - GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -X main.version=${CI_COMMIT_TAG}" -o node-lookup-darwin-arm64 ./... depends_on: [test] - name: release @@ -31,8 +47,13 @@ steps: NOTES=$(git log --merges --pretty=format:"- %s") fi tea releases edit "${CI_COMMIT_TAG}" --note "${NOTES}" --login gitea --repo "${CI_REPO}" - tea releases assets create "${CI_COMMIT_TAG}" node-lookup-linux-amd64 --login gitea --repo "${CI_REPO}" + tea releases assets create "${CI_COMMIT_TAG}" \ + node-lookup-linux-amd64 \ + node-lookup-linux-arm64 \ + node-lookup-darwin-amd64 \ + node-lookup-darwin-arm64 \ + --login gitea --repo "${CI_REPO}" backend_options: kubernetes: serviceAccountName: default - depends_on: [build] + depends_on: [build-linux-amd64, build-linux-arm64, build-darwin-amd64, build-darwin-arm64] -- 2.47.3 From 6d5e7215fed34ebd664253fae89ed369e23bbfa7 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Thu, 26 Mar 2026 15:21:02 +1100 Subject: [PATCH 3/3] feat: trigger release pipeline on tag push, create release in pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Makefile patch/minor/major now only tag and push. The pipeline handles creating the Gitea release with notes and uploading all four binaries. Also drop --merges filter so squash-merged PRs appear in release notes. 💘 Generated with Crush Assisted-by: Claude Sonnet 4.6 via Crush --- .woodpecker/release.yaml | 8 ++++---- Makefile | 11 +++++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml index eccb050..e6077bf 100644 --- a/.woodpecker/release.yaml +++ b/.woodpecker/release.yaml @@ -1,5 +1,5 @@ when: - - event: release + - event: tag steps: - name: test @@ -42,11 +42,11 @@ steps: tea logins add --name gitea --url https://git.unkin.net --token "$${RELEASER_TOKEN}" --no-version-check PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") if [ -n "$PREV_TAG" ]; then - NOTES=$(git log "${PREV_TAG}..${CI_COMMIT_TAG}" --merges --pretty=format:"- %s") + NOTES=$(git log "${PREV_TAG}..${CI_COMMIT_TAG}" --pretty=format:"- %s") else - NOTES=$(git log --merges --pretty=format:"- %s") + NOTES=$(git log --pretty=format:"- %s") fi - tea releases edit "${CI_COMMIT_TAG}" --note "${NOTES}" --login gitea --repo "${CI_REPO}" + tea releases create "${CI_COMMIT_TAG}" --tag "${CI_COMMIT_TAG}" --title "${CI_COMMIT_TAG}" --note "${NOTES}" --login gitea --repo "${CI_REPO}" tea releases assets create "${CI_COMMIT_TAG}" \ node-lookup-linux-amd64 \ node-lookup-linux-arm64 \ diff --git a/Makefile b/Makefile index 5812135..42deaec 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ BINARY := node-lookup VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo dev) GOFLAGS := -ldflags="-s -w -X main.version=$(VERSION)" -.PHONY: all build test lint clean install patch minor major _release +.PHONY: all build test lint clean install patch minor major _tag all: build @@ -31,16 +31,15 @@ _PAT := $(shell echo $(_BASE) | sed 's/^v//' | cut -d. -f3) patch: @NEW=v$(_MAJ).$(_MIN).$(shell expr $(_PAT) + 1); \ - git tag $$NEW && echo "Tagged $$NEW" && $(MAKE) _release TAG=$$NEW + git tag $$NEW && echo "Tagged $$NEW" && $(MAKE) _tag TAG=$$NEW minor: @NEW=v$(_MAJ).$(shell expr $(_MIN) + 1).0; \ - git tag $$NEW && echo "Tagged $$NEW" && $(MAKE) _release TAG=$$NEW + git tag $$NEW && echo "Tagged $$NEW" && $(MAKE) _tag TAG=$$NEW major: @NEW=v$(shell expr $(_MAJ) + 1).0.0; \ - git tag $$NEW && echo "Tagged $$NEW" && $(MAKE) _release TAG=$$NEW + git tag $$NEW && echo "Tagged $$NEW" && $(MAKE) _tag TAG=$$NEW -_release: +_tag: git push origin $(TAG) - tea releases create --tag $(TAG) --title $(TAG) -- 2.47.3