注
本文记载了使用jenkins部署时,用到过的脚本,给大家参考和自身以后的复用。该部署记载了一个项目(基于golang)的仓库拉取,到jenkins编译,并上传给指定服务器部署至结束。
在使用jenkins部署前,需要注意以下问题:
- jenkins服务器如果需要在线编译仓库代码,需要安装正确的依赖
- 尽量不要对其他使用到同jenkins服务器的同学产生影响,环境变量使用临时的export
- 拉取代码为了避免过大过慢,拉取深度要设置为1,并指定分支,无权限时需要提供git密码账户
- 部署任务需要支持多次执行,即一次部署的残留要clear干净。
# 环境变量
export GOROOT=/data/go1.9
export PATH=${PATH}:${GOROOT}/bin
export GOPATH=/home/tonnn/go
# rm
rm -rf ${GOPATH}/src/projectName;
# clone
cd ${GOPATH}/src
git clone -b dev https://username:password@xxx.xxx.com.git --depth 1;
# cd
cd projectName
# build
GOOS=linux GOARCH=amd64 go1.9 build -o project_srv
ls -l
# scp to dest
## scp -P 22 project_srv web@x.x.x.x:/tmp/project_srv;
# rsync 替代scp
rsync --delete -arvz project_srv web@x.x.x.x:/home/web/projects/project_srv
# ssh and exec
ssh -tt web@x.x.x.x "\
rm /home/web/projects/projectName/project_srv; \
cp /tmp/project_srv /home/web/projects/projectName/project_srv; \
chmod 777 /home/web/projects/projectName/project_srv; \
supervisorctl restart project_srv; \
rm -f /home/web/projects/projectName/stdout_dev.log.* \
"
# print ok
echo ok;
# clear
cd ${GOPATH}/src
rm -rf projectName;