程序测试阶段,经常需要打包上传到测试服务器,所以写了个一键打包的脚本,方便操作。
build.sh
#!/usr/bin/env bash version="0.9" main_file="./main.go" target_dir="./outputdir/" target_file="file" rm -rf ${target_dir}* if [[ ! -x "$target_dir" ]]; then mkdir -p "$target_dir" fi if [[ -z ${target_file} ]];then target_file=${main_file%".go"*} fi echo "build start" if [[ $1 == "windows" ]]; then export GOOS=windows export GOARCH=amd64 echo "GOOS=windows GOARCH=amd64" else export GOOS=linux export GOARCH=amd64 echo "GOOS=linux GOARCH=amd64" fi export GO111MODULE=on go build -v -ldflags="-X main.VERSION=1.0.0 -X 'main.BUILD_TIME=`date`' -X 'main.GO_VERSION=`go version`'" -o $target_dir$target_file $main_file if [[ $? -ne 0 ]]; then echo "build faild" exit 1 fi echo "build success" cd ${target_dir} echo "tar start" tar zcvf ${target_file}.tar.gz * echo "tar end"
public.sh
#!/usr/bin/env bash server_name="uone-admin" server_path="/opt/uone/admin/" target_dir="./outputdir/" target_file="uone_admin" test_host="192.168.0.201" ali_host="0.0.0.0" release_host="0.0.0.0" echo -e "choose server [test/ali/release]:\c" read server ./build.sh if [[ $? -ne 0 ]]; then exit 1 fi if [[ ${server} == "test" ]]; then host=${test_host} elif [[ ${server} == "ali" ]]; then host=${ali_host} elif [[ ${server} == "release" ]]; then host=${release_host} else echo "no server $server" exit 1 fi echo ${host} scp ${target_dir}${target_file}_new root@${host}:${server_path} ssh root@${host} supervisorctl stop ${server_name} ssh root@${host} mv ${server_path}${target_file}_new ${server_path}${target_file} ssh root@${host} supervisorctl start ${server_name}