From 5122000d4862745095fb149997ec2dad2ece1501 Mon Sep 17 00:00:00 2001 From: Julien Riou Date: Wed, 17 Sep 2025 10:24:35 +0200 Subject: [PATCH] feat: Create releases with make releases Fixes #22. Signed-off-by: Julien Riou --- Makefile | 61 ++++++++++++++++++++++++++++++++++++++----------- docker/build.sh | 20 ++++++++++++++++ 2 files changed, 68 insertions(+), 13 deletions(-) create mode 100755 docker/build.sh diff --git a/Makefile b/Makefile index d73d30f..cb3b93c 100644 --- a/Makefile +++ b/Makefile @@ -4,26 +4,61 @@ GITCOMMIT := $(shell git log -1 --oneline | awk '{print $$1}') OS := $(shell uname -s | tr [A-Z] [a-z]) ARCH := $(shell uname -m | tr [A-Z] [a-z]) LDFLAGS = -X main.AppVersion=${APPVERSION} -X main.GoVersion=${GOVERSION} -X main.GitCommit=${GITCOMMIT} +DOCKER_IMAGE = golang:1.24-trixie -.PHONY: clean test +.PHONY: clean clean_for_releases test build: - (cd src \ - && go build -ldflags "${LDFLAGS}" -o ../bin/collerd cmd/collerd/main.go \ - && go build -ldflags "${LDFLAGS}" -o ../bin/copier cmd/copier/main.go \ - && go build -ldflags "${LDFLAGS}" -o ../bin/coller cmd/coller/main.go \ - ) + cd src \ + && go build -ldflags "${LDFLAGS}" -o ../bin/collerd cmd/collerd/main.go \ + && go build -ldflags "${LDFLAGS}" -o ../bin/copier cmd/copier/main.go \ + && go build -ldflags "${LDFLAGS}" -o ../bin/coller cmd/coller/main.go -archive: - (mkdir -p releases && cd bin && tar cvzpf ../releases/coller-${APPVERSION}-${OS}-${ARCH}.tar.gz * && cd ../releases && sha256sum *.tar.gz) +build_linux_amd64: + cd src \ + && GOOS=linux GOARCH=amd64 go build -ldflags "${LDFLAGS}" -o ../bin/collerd-${APPVERSION}-linux-amd64 cmd/collerd/main.go \ + && GOOS=linux GOARCH=amd64 go build -ldflags "${LDFLAGS}" -o ../bin/coller-${APPVERSION}-linux-amd64 cmd/coller/main.go \ + && GOOS=linux GOARCH=amd64 go build -ldflags "${LDFLAGS}" -o ../bin/copier-${APPVERSION}-linux-amd64 cmd/copier/main.go -release: build archive +archive_linux_amd64: + mkdir -p releases/coller-${APPVERSION}-linux-amd64 \ + && cp bin/collerd-${APPVERSION}-linux-amd64 releases/coller-${APPVERSION}-linux-amd64/collerd \ + && cp bin/coller-${APPVERSION}-linux-amd64 releases/coller-${APPVERSION}-linux-amd64/coller \ + && cp bin/copier-${APPVERSION}-linux-amd64 releases/coller-${APPVERSION}-linux-amd64/copier \ + && cd releases/ \ + && tar cvpzf coller-${APPVERSION}-linux-amd64.tar.gz coller-${APPVERSION}-linux-amd64 + +build_darwin_arm64: + cd src \ + && GOOS=darwin GOARCH=arm64 go build -ldflags "${LDFLAGS}" -o ../bin/collerd-${APPVERSION}-darwin-arm64 cmd/collerd/main.go \ + && GOOS=darwin GOARCH=arm64 go build -ldflags "${LDFLAGS}" -o ../bin/coller-${APPVERSION}-darwin-arm64 cmd/coller/main.go \ + && GOOS=darwin GOARCH=arm64 go build -ldflags "${LDFLAGS}" -o ../bin/copier-${APPVERSION}-darwin-arm64 cmd/copier/main.go + +archive_darwin_arm64: + mkdir -p releases/coller-${APPVERSION}-darwin-arm64 \ + && cp bin/collerd-${APPVERSION}-darwin-arm64 releases/coller-${APPVERSION}-darwin-arm64/collerd \ + && cp bin/coller-${APPVERSION}-darwin-arm64 releases/coller-${APPVERSION}-darwin-arm64/coller \ + && cp bin/copier-${APPVERSION}-darwin-arm64 releases/coller-${APPVERSION}-darwin-arm64/copier \ + && cd releases/ \ + && tar cvpzf coller-${APPVERSION}-darwin-arm64.tar.gz coller-${APPVERSION}-darwin-arm64 + +checksum: + cd releases \ + && sha256sum *.tar.gz > checksums.txt + +clean_for_releases: + rm -rf releases/coller-${APPVERSION}-linux-amd64 \ + && rm -rf releases/coller-${APPVERSION}-darwin-arm64 + +releases: build_linux_amd64 build_darwin_arm64 archive_linux_amd64 archive_darwin_arm64 checksum clean_for_releases + +releases_with_docker: + docker run -it -v $(shell pwd):/mnt -w /mnt -e "UID=$(shell id -u)" -e "GID=$(shell id -g)" ${DOCKER_IMAGE} ./docker/build.sh test: - (cd src \ - && go test internal/*.go \ - && go test server/*.go \ - ) + cd src \ + && go test internal/*.go \ + && go test server/*.go clean: rm -rf bin releases diff --git a/docker/build.sh b/docker/build.sh new file mode 100755 index 0000000..783ba44 --- /dev/null +++ b/docker/build.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Script to create releases with Docker +# Used by `make releases_with_docker` +set -e + +if [ -z "UID" ] ; then + echo "UID not defined" + exit 1 +fi +if [ -z "GID" ] ; then + echo "GID not defined" + exit 1 +fi + +apt-get update +apt-get install -y libx11-dev + +make releases + +chown ${UID}:${GID} -R releases