| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #!/bin/bash
- # author: sre.list@songguo7.com
- # 2020.04.01
- # 脚本执行输入参数:一个参数 项目名 $project(可以不输入)
- # 输出构建包 二进制文件及相关构建日志
- #########################################################################
- # devops build go project script
- #
- # PROJECT: 项目名称;
- # RESULT_NAME:${PROJECT}-app
- # BUILD_DEST_TARGET:
- # 手动调试构建某版本代码例如 cd /data/ci_build/sre/devops/93042d7b_20200328145142 && bash cicd/build.sh
- #########################################################################
- #set -x
- #golang配置
- source /etc/profile
- GOLANG=$(which go)
- PROJECT_DIR=`pwd`
- if [[ "x$1" != "x" ]] ;then
- PROJECT=$1
- else
- PROJECT=$(basename `pwd`)
- fi
- CURDIR=${PROJECT_DIR}
- #GOPATH="${CURDIR}"
- APP_BIN=${PROJECT}-app
- BUILD_DEST_TARGET='bin'
- DEPLOY_TARGET='deploy_target'
- #export GOPATH="${CURDIR}"
- export GOBIN="${CURDIR}/bin/"
- #echo 'GOPATH:' ${GOPATH}
- echo 'GOBIN:' ${GOBIN}
- echo 'GO:' ${GOLANG}
- echo "PROJECT ${PROJECT}"
- echo "BUILD_DEST_TARGET ${BUILD_DEST_TARGET}"
- echo "APP-BIN ${APP_BIN}"
- #根据脚本执行结果;判断输出信息
- function echoTime(){
- limitTime=$(date "+%Y-%m-%d %H:%M:%S")
- echo ${limitTime}
- }
- function setMsg() {
- run_result=$?
- msg=$1
- if [[ "${run_result}" -eq 0 ]];then
- echoTime
- echo -e "[devops build] : ${msg} success"
- else
- echo -e "[devops build] : !!!ERR!!!! ${msg} fail"
- echo -e ""
- exit 123
- fi
- }
- function echoMsg() {
- msg=$1
- echoTime
- echo -e "[devops build] : ${msg} "
- }
- #优化 log
- function logSplite() {
- line='------------------------------------------------------------------------'
- typeSplitetype=$1
- if [[ ${typeSplitetype} == 'head' ]]; then
- headMsg=$2
- echoMsg ${line}
- echoMsg " ${headMsg} "
- echoMsg ${line}
- else
- echoMsg ${line}
- echoMsg ''
- fi
- }
- # 如生成二进制可执行文件${PROJECT}-app
- # 此处不做压缩归档。 devops 会把指定的产物压缩归档,然后挪到相应位置 提供下载部署使用。部署的时候解压使用。
- function mvPackage() {
- if [[ -e "${BUILD_DEST_TARGET}/${APP_BIN}" ]];then
- mv ${BUILD_DEST_TARGET}/${APP_BIN} ${DEPLOY_TARGET}/${APP_BIN}
- else
- echoMsg "BUILD ERROR"
- exit 1
- fi
- if [[ -d "config" ]]; then
- cp -r config ${DEPLOY_TARGET}/
- else
- echoMsg "无config 需要 拷贝"
- fi
- }
- # 构建部署产物(各个环境统一一个)
- function buildGo() {
- logSplite 'head' 'BUILD START0 ...'
- OLDGO111MODULE="$GO111MODULE"
- OLDGOPROXY="$GOPROXY"
- OLDGOPRIVATE="$GOPRIVATE"
- OLDGOFLAGS="$GOFLAGS"
- export GO111MODULE=on
- export GOPROXY=https://goproxy.cn,direct
- export GOPRIVATE=gitea.ckfah.com*
- export GOFLAGS=
- raceArgs=" -race "
- mkdir -p ${BUILD_DEST_TARGET} ${DEPLOY_TARGET}
- echo go build -o ${BUILD_DEST_TARGET}/${APP_BIN} ${raceArgs} -v -gcflags "-N -l" cmd/main.go
- logSplite 'head' 'BUILD START1 ...'
- go build -o ${BUILD_DEST_TARGET}/${APP_BIN} ${raceArgs} -v -gcflags "-N -l" cmd/main.go
- export GO111MODULE=${OLDGO111MODULE}
- export GOPROXY=${OLDGOPROXY}
- export GOPRIVATE=${OLDGOPRIVATE}
- export GOFLAGS=${OLDGOFLAGS}
- if [[ $? -ne 0 ]] ;then
- echo "BUILD ERROR"
- exit -1
- fi
- setMsg 'BUILD END'
- mvPackage
- }
- function runBuild () {
- buildGo
- }
- runBuild
|