forked from fagongzi/manba
-
Notifications
You must be signed in to change notification settings - Fork 0
/
release.sh
58 lines (48 loc) · 1.64 KB
/
release.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash
HOME=`dirname $0`
DIST=$HOME/dist
BIN_API=$HOME/cmd/api
BIN_PROXY=$HOME/cmd/proxy
VERSION_PATH=`echo $(realpath $HOME) | sed -e "s;${GOPATH}/src/;;g"`/pkg/util
LD_GIT_COMMIT="-X '${VERSION_PATH}.GitCommit=`git rev-parse --short HEAD`'"
LD_BUILD_TIME="-X '${VERSION_PATH}.BuildTime=`date +%FT%T%z`'"
LD_GO_VERSION="-X '${VERSION_PATH}.GoVersion=`go version`'"
LD_FLAGS="${LD_GIT_COMMIT} ${LD_BUILD_TIME} ${LD_GO_VERSION} -w -s"
prepare() {
echo "start prepare release"
rm -rf $DIST
mkdir $DIST
echo "complete prepare release"
}
download_etcd() {
ETCD_VER=v3.0.14 \
&& DOWNLOAD_URL=https://github.com/coreos/etcd/releases/download \
&& curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz \
&& tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C $DIST --strip-components=1
}
build_bin() {
echo "start build binary"
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o apiserver -ldflags "${LD_FLAGS}" $BIN_API/...
mv apiserver $DIST
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o proxy -ldflags "${LD_FLAGS}" $BIN_PROXY/...
mv proxy $DIST
echo "complete build binary"
}
build_docker() {
echo "start build docker image, version is $1"
docker build -t fagongzi/gateway:$1 -f Dockerfile .
docker build -t fagongzi/proxy:$1 -f Dockerfile-proxy .
docker build -t fagongzi/apiserver:$1 -f Dockerfile-apiserver .
echo "complete build docker"
}
clean() {
echo "start clean build"
rm -rf $DIST
echo "complete clean build"
}
prepare
build_bin
download_etcd
build_docker $1
clean
echo "All completed"