@@ -4,27 +4,16 @@ COMMIT=$(shell git rev-parse --verify HEAD)
44DATE =$(shell date -u +"% Y-% m-% dT% H:% M:% SZ")
55LD_FLAGS =-s -w -linkmode external -extldflags "-static" -X main.BuildDate=$(DATE ) -X main.BuildMode=prod -X main.BuildCommit=$(COMMIT ) -X main.BuildVersion=$(VERSION )
66BUILD_DIR =./build
7- BUILD_LICENSE =${BUILD_DIR}/license/3RD_PARTY_LICENSES
8- UI_BUILD_LICENSE =${BUILD_DIR}/license/UI_3RD_PARTY_LICENSES
97PWD =$(shell pwd)
10- GO_VERSION =1.13.1
11- DOCKER_BUILD_IMAGE =traggo/build
12- DOCKER_WORKDIR =/proj
13- GOPATH_VOLUME =-v "` go env GOPATH ` /pkg/mod/:/go/pkg/mod"
14- WORKDIR_VOLUME =-v "${PWD}/:${DOCKER_WORKDIR}"
15- DOCKER_GO_BUILD =go build -a -installsuffix cgo -ldflags '${LD_FLAGS}' -tags '${TAGS}'
16- DOCKER_RUN =docker run --rm ${WORKDIR_VOLUME} ${GOPATH_VOLUME} -w ${DOCKER_WORKDIR}
17- NEW_IMAGE_NAME =traggo/server
18- DOCKER_MANIFEST=DOCKER_CLI_EXPERIMENTAL =enabled docker manifest
19- BIN_PREFIX =traggo-server
8+ GOLANG_CROSS_VERSION =v1.22.0
209
2110license-dir :
2211 mkdir -p build/license || true
2312
2413download-tools :
2514 go install golang.org/x/tools/cmd/goimports@v0.1.10
2615 go install github.com/gobuffalo/packr/v2/packr2@v2.7.1
27- go install github.com/99designs/gqlgen@v0.17.42
16+ go install github.com/99designs/gqlgen@v0.17.44
2817
2918generate-go :
3019 gqlgen
@@ -80,95 +69,18 @@ pre-build: build-js packr
8069build-bin-local : pre-build
8170 CGO_ENABLED=1 go build -a -ldflags ' ${LD_FLAGS}' -tags ' ${TAGS}' -o ${BUILD_DIR} /traggo-server
8271
83- build-bin-linux-amd64 : pre-build
84- ${DOCKER_RUN} ${DOCKER_BUILD_IMAGE} :$(GO_VERSION ) -linux-amd64 ${DOCKER_GO_BUILD} -o ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-amd64 ${DOCKER_WORKDIR}
72+ .PHONY : release
73+ release :
74+ docker build -t traggo:build -f docker/Dockerfile.build docker
75+ docker run \
76+ --rm \
77+ -e CGO_ENABLED=1 \
78+ -v /var/run/docker.sock:/var/run/docker.sock \
79+ -v $$ PWD:/work \
80+ -w /work \
81+ traggo:build \
82+ release --skip-validate
8583
86- build-docker-linux-amd64 :
87- cp ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-amd64 docker/traggo && docker build -t ${NEW_IMAGE_NAME} :amd64-latest -t ${NEW_IMAGE_NAME} :amd64-${VERSION} docker/ && rm docker/traggo
88-
89- build-bin-linux-386 : pre-build
90- ${DOCKER_RUN} ${DOCKER_BUILD_IMAGE} :$(GO_VERSION ) -linux-386 ${DOCKER_GO_BUILD} -o ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-386 ${DOCKER_WORKDIR}
91-
92- build-docker-linux-386 :
93- cp ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-386 docker/traggo && docker build -t ${NEW_IMAGE_NAME} :386-latest -t ${NEW_IMAGE_NAME} :386-${VERSION} docker/ && rm docker/traggo
94-
95- build-bin-linux-arm-7 : pre-build
96- ${DOCKER_RUN} ${DOCKER_BUILD_IMAGE} :$(GO_VERSION ) -linux-arm-7 ${DOCKER_GO_BUILD} -o ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-arm-7 ${DOCKER_WORKDIR}
97-
98- build-docker-linux-arm-7 :
99- cp ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-arm-7 docker/traggo && docker build -t ${NEW_IMAGE_NAME} :arm-7-latest -t ${NEW_IMAGE_NAME} :arm-7-${VERSION} docker/ && rm docker/traggo
100-
101- build-bin-linux-arm64 : pre-build
102- ${DOCKER_RUN} ${DOCKER_BUILD_IMAGE} :$(GO_VERSION ) -linux-arm64 ${DOCKER_GO_BUILD} -o ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-arm64 ${DOCKER_WORKDIR}
103-
104- build-docker-linux-arm64 :
105- cp ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-arm64 docker/traggo && docker build -t ${NEW_IMAGE_NAME} :arm64-latest -t ${NEW_IMAGE_NAME} :arm64-${VERSION} docker/ && rm docker/traggo
106-
107- build-bin-windows-amd64 : pre-build
108- ${DOCKER_RUN} ${DOCKER_BUILD_IMAGE} :$(GO_VERSION ) -windows-amd64 ${DOCKER_GO_BUILD} -o ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -windows-amd64.exe ${DOCKER_WORKDIR}
109-
110- build-bin-windows-386 : pre-build
111- ${DOCKER_RUN} ${DOCKER_BUILD_IMAGE} :$(GO_VERSION ) -windows-386 ${DOCKER_GO_BUILD} -o ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -windows-386.exe ${DOCKER_WORKDIR}
112-
113- build-bin-linux-ppc64le : pre-build
114- ${DOCKER_RUN} ${DOCKER_BUILD_IMAGE} :$(GO_VERSION ) -linux-ppc64le ${DOCKER_GO_BUILD} -o ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-ppc64le ${DOCKER_WORKDIR}
115-
116- build-docker-linux-ppc64le :
117- cp ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-ppc64le docker/traggo && docker build -t ${NEW_IMAGE_NAME} :ppc64le-latest -t ${NEW_IMAGE_NAME} :ppc64le-${VERSION} docker/ && rm docker/traggo
118-
119- build-bin-linux-s390x : pre-build
120- ${DOCKER_RUN} ${DOCKER_BUILD_IMAGE} :$(GO_VERSION ) -linux-s390x ${DOCKER_GO_BUILD} -o ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-s390x ${DOCKER_WORKDIR}
121-
122- build-docker-linux-s390x :
123- cp ${BUILD_DIR} /${BIN_PREFIX} -${VERSION} -linux-s390x docker/traggo && docker build -t ${NEW_IMAGE_NAME} :s390x-latest -t ${NEW_IMAGE_NAME} :s390x-${VERSION} docker/ && rm docker/traggo
124-
125- build-bin : build-bin-linux-amd64 build-bin-linux-386 build-bin-linux-arm-7 build-bin-linux-arm64 build-bin-linux-ppc64le build-bin-linux-s390x build-bin-windows-amd64 build-bin-windows-386
126-
127- build-docker : build-docker-linux-amd64 build-docker-linux-386 build-docker-linux-arm-7 build-docker-linux-arm64 build-docker-linux-ppc64le build-docker-linux-s390x
128-
129- fix-build-owner :
130- sudo chown -R $(shell id -u) :$(shell id -g) ${BUILD_DIR}
131-
132- docker-login-ci :
133- docker login -u " $$ DOCKER_USER" -p " $$ DOCKER_PASS" ;
134-
135- docker-push :
136- docker push --all-tags ${NEW_IMAGE_NAME}
137-
138- docker-push-manifest :
139- ${DOCKER_MANIFEST} create " ${NEW_IMAGE_NAME} :latest" " ${NEW_IMAGE_NAME} :amd64-latest" " ${NEW_IMAGE_NAME} :386-latest" " ${NEW_IMAGE_NAME} :arm-7-latest" " ${NEW_IMAGE_NAME} :arm64-latest" " ${NEW_IMAGE_NAME} :ppc64le-latest" " ${NEW_IMAGE_NAME} :s390x-latest"
140- ${DOCKER_MANIFEST} create " ${NEW_IMAGE_NAME} :${VERSION} " " ${NEW_IMAGE_NAME} :amd64-${VERSION} " " ${NEW_IMAGE_NAME} :386-${VERSION} " " ${NEW_IMAGE_NAME} :arm-7-${VERSION} " " ${NEW_IMAGE_NAME} :arm64-${VERSION} " " ${NEW_IMAGE_NAME} :ppc64le-${VERSION} " " ${NEW_IMAGE_NAME} :s390x-${VERSION} "
141- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :latest" " ${NEW_IMAGE_NAME} :amd64-latest" --os=linux --arch=amd64
142- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :${VERSION} " " ${NEW_IMAGE_NAME} :amd64-${VERSION} " --os=linux --arch=amd64
143- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :latest" " ${NEW_IMAGE_NAME} :386-latest" --os=linux --arch=386
144- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :${VERSION} " " ${NEW_IMAGE_NAME} :386-${VERSION} " --os=linux --arch=386
145- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :latest" " ${NEW_IMAGE_NAME} :arm-7-latest" --os=linux --arch=arm --variant=v7
146- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :${VERSION} " " ${NEW_IMAGE_NAME} :arm-7-${VERSION} " --os=linux --arch=arm --variant=v7
147- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :latest" " ${NEW_IMAGE_NAME} :arm64-latest" --os=linux --arch=arm64
148- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :${VERSION} " " ${NEW_IMAGE_NAME} :arm64-${VERSION} " --os=linux --arch=arm64
149- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :latest" " ${NEW_IMAGE_NAME} :ppc64le-latest" --os=linux --arch=ppc64le
150- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :${VERSION} " " ${NEW_IMAGE_NAME} :ppc64le-${VERSION} " --os=linux --arch=ppc64le
151- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :latest" " ${NEW_IMAGE_NAME} :s390x-latest" --os=linux --arch=s390x
152- ${DOCKER_MANIFEST} annotate " ${NEW_IMAGE_NAME} :${VERSION} " " ${NEW_IMAGE_NAME} :s390x-${VERSION} " --os=linux --arch=s390x
153- ${DOCKER_MANIFEST} push " ${NEW_IMAGE_NAME} :${VERSION} "
154- ${DOCKER_MANIFEST} push " ${NEW_IMAGE_NAME} :latest"
155-
156- licenses-ui : license-dir
157- (cd ui && yarn -s licenses generate-disclaimer --prod > ../${UI_BUILD_LICENSE} )
158-
159- licenses-go : license-dir
160- go mod vendor
161- echo " THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE THAT MAY BE CONTAINED IN PORTIONS OF THE TRAGGO PRODUCT" > ${BUILD_LICENSE}
162- echo >> ${BUILD_LICENSE}
163- echo ------- >> ${BUILD_LICENSE}
164- echo >> ${BUILD_LICENSE}
165- (cd vendor && find . -type f \( -iname " LICENSE*" -o -iname " NOTICE*" \) -exec echo The following software may be included in this product {} \; -exec echo \; -exec cat {} \; -exec echo \; -exec echo -------- \; -exec echo \; ) >> ${BUILD_LICENSE}
166-
167- package-zip : licenses-ui licenses-go
168- find build/* -maxdepth 0 -type f -exec zip -9 -j {}.zip {} build/license/3RD_PARTY_LICENSES build/license/UI_3RD_PARTY_LICENSES LICENSE \;
169-
170- build-compress :
171- find build/* -maxdepth 0 -type f -exec upx {} \;
17284
17385install : install-go install-js
17486
0 commit comments