/ Makefile
Makefile
 1  APP_NAME = consul-alerts
 2  VERSION = latest
 3  BUILD_ARCHS=linux-386 linux-amd64 darwin-amd64 freebsd-amd64
 4  
 5  all: clean build
 6  
 7  clean:
 8  	@echo "--> Cleaning build"
 9  	@rm -rf ./build
10  
11  prepare:
12  	@for arch in ${BUILD_ARCHS}; do \
13  		mkdir -p build/bin/$${arch}; \
14  	done
15  	@mkdir -p build/test
16  	@mkdir -p build/doc
17  	@mkdir -p build/tar
18  
19  format:
20  	@echo "--> Formatting source code"
21  	@go fmt ./...
22  
23  test: prepare format
24  	@echo "--> Testing application"
25  	@go test -outputdir build/test ./...
26  
27  build: test
28  	@echo "--> Building local application"
29  	@go build -o build/bin/`uname -s`-`uname -p`/${VERSION}/${APP_NAME} -v .
30  
31  build-all: test
32  	@echo "--> Building all application"
33  	@for arch in ${BUILD_ARCHS}; do \
34  		echo "... $${arch}"; \
35  		GOOS=`echo $${arch} | cut -d '-' -f 1` \
36  		GOARCH=`echo $${arch} | cut -d '-' -f 2` \
37  		go build -o build/bin/$${arch}/${VERSION}/${APP_NAME} -v . ; \
38  	done
39  
40  package: build-all
41  	@echo "--> Packaging application"
42  	@for arch in ${BUILD_ARCHS}; do \
43  		tar czf build/tar/${APP_NAME}-${VERSION}-$${arch}.tgz -C build/bin/$${arch}/${VERSION} ${APP_NAME} ; \
44  	done
45  
46  release: package
47  ifeq ($(VERSION) , latest)
48  	@echo "--> Removing Latest Version"
49  	@curl -s -X DELETE -u ${ACCESS_KEY} https://api.bintray.com/packages/darkcrux/generic/${APP_NAME}/versions/${VERSION}
50  	@echo
51  endif
52  	@echo "--> Releasing version: ${VERSION}"
53  	@for arch in ${BUILD_ARCHS}; do \
54  		curl -s -T "build/tar/${APP_NAME}-${VERSION}-$${arch}.tgz" -u "${ACCESS_KEY}" "https://api.bintray.com/content/darkcrux/generic/${APP_NAME}/${VERSION}/${APP_NAME}-${VERSION}-$${arch}.tgz"; \
55  		echo "... $${arch}"; \
56  	done
57  	@echo "--> Publishing version ${VERSION}"
58  	@curl -s -X POST -u ${ACCESS_KEY} https://api.bintray.com/content/darkcrux/generic/${APP_NAME}/${VERSION}/publish
59  	@echo
60  	@echo "Github Release"
61  	@gh-release create AcalephStorage/consul-alerts ${VERSION}