Rainbond/release.sh

118 lines
3.3 KiB
Bash
Raw Normal View History

#!/bin/bash
set -o errexit
# define package name
2017-11-17 15:25:38 +08:00
PROGRAM="gr-rainbond"
WORK_DIR=/go/src/github.com/goodrain/rainbond
2017-11-22 13:56:59 +08:00
DOCKER_PATH=./hack/contrib/docker/$1
BASE_NAME=rainbond
releasedir=./.release
distdir=${releasedir}/dist
2017-12-10 22:37:48 +08:00
gaopsdir=/hack/contrib/docker/node/gaops
gitDescribe=$(git describe --tag|sed 's/^v//')
describe_items=($(echo $gitDescribe | tr '-' ' '))
2017-12-01 12:32:31 +08:00
branch_info=($(git branch | grep '^*' | cut -d ' ' -f 2 | tr '-' " "))
describe_len=${#describe_items[@]}
VERSION=${describe_items[0]}
git_commit=$(git log -n 1 --pretty --format=%h)
2017-12-01 12:32:31 +08:00
if [ $describe_len -ge 3 ];then
buildRelease=${describe_items[-2]}.${describe_items[-1]}
else
buildRelease=0.$git_commit
fi
if [ -z "$VERSION" ];then
VERSION=3.4
fi
2017-12-01 12:32:31 +08:00
release_desc=${branch_info}-${VERSION}-${buildRelease}
function prepare() {
rm -rf $releasedir
mkdir -pv $releasedir/{tmp,dist}
path=$PWD
2017-12-10 21:20:23 +08:00
#git clone $gaops $releasedir/tmp
[ ! -d "$distdir/usr/local/" ] && mkdir -p $distdir/usr/local/bin
[ ! -d "$distdir/usr/share/gr-rainbond-node/gaops/" ] && mkdir -pv $distdir/usr/share/gr-rainbond-node/gaops
cd $releasedir/tmp
2017-12-10 22:37:48 +08:00
cp -a $path$gaopsdir/* ./
tar zcf ../dist/usr/share/gr-rainbond-node/gaops/gaops.tgz ./
cd $path
rm -rf $releasedir/tmp
}
function build() {
2017-11-17 15:25:38 +08:00
echo "---> Build Binary For ACP"
echo "build rainbond-node"
docker run -v `pwd`:${WORK_DIR} -w ${WORK_DIR} -it golang:1.8.3 go build -ldflags '-w -s' -o $releasedir/dist/usr/local/bin/${BASE_NAME}-node ./cmd/node
2017-12-01 12:32:31 +08:00
echo "grctl version:$release_desc"
sed -i "s/0.0.0/$release_desc/g" ./cmd/grctl/option/version.go
2017-11-17 15:25:38 +08:00
echo "build rainbond-grctl"
docker run -v `pwd`:${WORK_DIR} -w ${WORK_DIR} -it golang:1.8.3 go build -ldflags '-w -s' -o $releasedir/dist/usr/local/bin/${BASE_NAME}-grctl ./cmd/grctl
2017-12-01 12:32:31 +08:00
sed -i "s/$release_desc/0.0.0/g" ./cmd/grctl/option/version.go
}
function build::rpm() {
echo "---> Make Build RPM"
source "hack/build-rpm.sh"
}
2017-11-20 12:03:39 +08:00
function build::deb() {
echo "---> Make Build DEB"
source "hack/build-deb.sh"
}
2017-11-22 13:56:59 +08:00
function build::image() {
echo "---> Build Image:$1 FOR ACP"
if [ "$1" = "eventlog" ];then
docker build -t goodraim.me/event-build:v1 ${DOCKER_PATH}/build
docker run --rm -v `pwd`:${WORK_DIR} -w ${WORK_DIR} goodraim.me/event-build:v1 go build -ldflags '-w -s' -o ${DOCKER_PATH}/${BASE_NAME}-$1 ./cmd/eventlog
2017-11-22 15:08:35 +08:00
elif [ "$1" = "chaos" ];then
docker run -v `pwd`:${WORK_DIR} -w ${WORK_DIR} -it golang:1.8.3 go build -ldflags '-w -s' -o ${DOCKER_PATH}/${BASE_NAME}-$1 ./cmd/builder
2017-11-22 13:56:59 +08:00
else
2017-11-22 14:55:36 +08:00
docker run -v `pwd`:${WORK_DIR} -w ${WORK_DIR} -it golang:1.8.3 go build -ldflags '-w -s' -o ${DOCKER_PATH}/${BASE_NAME}-$1 ./cmd/$1
2017-11-22 13:56:59 +08:00
fi
cd ${DOCKER_PATH}
sed "s/__RELEASE_DESC__/${release_desc}/" Dockerfile > Dockerfile.release
2017-11-22 14:55:36 +08:00
docker build -t hub.goodrain.com/${BASE_NAME}/rbd-$1:${VERSION} -f Dockerfile.release .
2017-11-22 17:04:25 +08:00
docker tag hub.goodrain.com/${BASE_NAME}/rbd-$1:${VERSION} ${BASE_NAME}/rbd-$1:${VERSION}
2017-12-10 21:20:23 +08:00
#docker tag hub.goodrain.com/${BASE_NAME}/rbd-$1:${VERSION} ${BASE_NAME}/rbd-$1
2017-11-29 16:20:00 +08:00
#docker push ${BASE_NAME}/rbd-$1
2017-11-22 13:56:59 +08:00
rm -f ./Dockerfile.release
rm -f ./${BASE_NAME}-$1
}
case $1 in
build)
prepare
build
;;
rpm)
2017-11-22 13:56:59 +08:00
prepare
build
build::rpm
;;
2017-11-20 12:03:39 +08:00
deb)
2017-11-22 13:56:59 +08:00
prepare
build
2017-11-20 12:03:39 +08:00
build::deb
;;
2017-11-30 21:37:52 +08:00
dev_deb)
build::deb
;;
dev_rpm)
build::rpm
;;
2017-11-22 13:56:59 +08:00
pkg)
prepare
build
build::rpm
2017-11-20 12:03:39 +08:00
build::deb
;;
2017-11-22 13:56:59 +08:00
*)
build::image $1
;;
esac