@@ -2,12 +2,14 @@ PROJECT_PKG = github.com/fullstack-devops/awesome-ci
22PKG_LIST = "github.com/fullstack-devops/awesome-ci/cmd/awesome-ci"
33BUILD_DIR = ./build
44
5+ LIST_TARGET_ARCH ?= linux/amd64 linux/arm64 windows/amd64 windows/arm64 darwin/amd64 darwin/arm64
6+ LIST_TARGET_ARCH_COMP ?= linux/amd64 linux/arm64 windows/amd64
7+
58LATEST_VERSION ?= "1.0.0"
69VERSION ?=$(shell git describe --tags --exact-match 2>/dev/null || echo "dev-pr")
710COMMIT_HASH ?= $(shell git rev-parse --short HEAD 2>/dev/null)
811BUILD_DATE ?= $(shell date +% FT% T% z)
912
10-
1113# remove debug info from the binary & make it smaller
1214LDFLAGS += -s -w
1315# inject build info
@@ -58,18 +60,34 @@ test/cover:
5860# # build: build the application
5961.PHONY : build
6062build :
61- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${GOARGS} -tags " ${GOTAGS} " -ldflags " ${LDFLAGS} " -o ${BUILD_DIR} /package/awesome-ci_${VERSION} _linux-amd64 ./cmd/awesome-ci
62- CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${GOARGS} -tags " ${GOTAGS} " -ldflags " ${LDFLAGS} " -o ${BUILD_DIR} /package/awesome-ci_${VERSION} _linux-arm64 ./cmd/awesome-ci
63- CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build ${GOARGS} -tags " ${GOTAGS} " -ldflags " ${LDFLAGS} " -o ${BUILD_DIR} /package/awesome-ci_${VERSION} _windows-amd64.exe ./cmd/awesome-ci
64- CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build ${GOARGS} -tags " ${GOTAGS} " -ldflags " ${LDFLAGS} " -o ${BUILD_DIR} /package/awesome-ci_${VERSION} _windows-arm64.exe ./cmd/awesome-ci
63+ @echo " [" > ${BUILD_DIR} /package/manifest.json
64+ @for TARGET in ${LIST_TARGET_ARCH} ; do \
65+ GOOS=$$(echo $$TARGET | cut -d'/' -f1 ) ; \
66+ GOARCH=$$(echo $$TARGET | cut -d'/' -f2 ) ; \
67+ EXT=" " ; \
68+ if [ " $$ GOOS" = " windows" ]; then EXT=" .exe" ; fi ; \
69+ echo " Building for GOOS=$$ GOOS GOARCH=$$ GOARCH" ; \
70+ FILENAME=" awesome-ci_${VERSION} _$$ GOOS-$$ GOARCH$$ EXT" ; \
71+ CGO_ENABLED=0 GOOS=$$ GOOS GOARCH=$$ GOARCH go build ${GOARGS} -tags " ${GOTAGS} " -ldflags " ${LDFLAGS} " -o ${BUILD_DIR} /package/$$ FILENAME ./cmd/awesome-ci; \
72+ if [ " $$ TARGET" = " $$ (echo ${LIST_TARGET_ARCH} | awk '{print $$ NF}')" ]; then \
73+ echo " {\" filename\" :\" $$ FILENAME\" , \" path\" :\" ${BUILD_DIR} /package/$$ FILENAME\" ,\" goos\" :\" $$ GOOS\" ,\" goarch\" :\" $$ GOARCH\" }" >> ${BUILD_DIR} /package/manifest.json; \
74+ else \
75+ echo " {\" filename\" :\" $$ FILENAME\" , \" path\" :\" ${BUILD_DIR} /package/$$ FILENAME\" ,\" goos\" :\" $$ GOOS\" ,\" goarch\" :\" $$ GOARCH\" }," >> ${BUILD_DIR} /package/manifest.json; \
76+ fi ; \
77+ done
78+ @echo " ]" >> ${BUILD_DIR} /package/manifest.json
6579
6680# # upx: compress binaries
6781.PHONY : upx
6882upx :
69- upx -5 ./build/package/awesome-ci_${VERSION} _linux-amd64
70- upx -5 ./build/package/awesome-ci_${VERSION} _linux-arm64
71- upx -5 ./build/package/awesome-ci_${VERSION} _windows-amd64.exe
72- # upx --best ./build/package/awesome-ci_${VERSION}_windows-arm64.exe
83+ @for TARGET in ${LIST_TARGET_ARCH_COMP} ; do \
84+ GOOS=$$(echo $$TARGET | cut -d'/' -f1 ) ; \
85+ GOARCH=$$(echo $$TARGET | cut -d'/' -f2 ) ; \
86+ EXT=" " ; \
87+ if [ " $$ GOOS" = " windows" ]; then EXT=" .exe" ; fi ; \
88+ echo " Compressing binary for GOOS=$$ GOOS GOARCH=$$ GOARCH" ; \
89+ upx -5 ./build/package/awesome-ci_${VERSION} _$$ GOOS-$$ GOARCH$$ EXT; \
90+ done
7391
7492chglog :
7593 go install github.com/git-chglog/git-chglog/cmd/git-chglog@latest
0 commit comments