传统的ftp上传,或通过svn hook提交,显得效率太慢,而且不太靠谱。
之前写了个gitlab 发布脚本。
echo 'pull project:'$1
gitBasePath='/show/gitBase/'
cd $gitBasePath$1
git pull
message=$(git log --pretty=format:"%s" -1)
isRedeploy=false
#检测到RELEASE,即发布项目
[[ $message =~ "[RELEASE]" ]] && isRedeploy=true
echo "是否可发布版本:"$isRedeploy;
#一定要传git项目名
if [[ $isRedeploy = true && $1 ]]
then
#判断$2, 有可能$1 与实际环境名不一样
if [[ -n $2 ]];then
webAppPath=$2
else
webAppPath='/webwww/www/'$1'/'
fi
#git 基础路径保持不变
gitBasePath='/show/gitBase/'$1'/'
echo "git:".$gitBasePath;
echo "web:".$webAppPath;
cp -r -f -v $gitBasePath* $webAppPath
echo "success";
else
echo "fail";
fi;
通过提交检测到[RELEASE]关键词即提交。
但未免还是会发生构建没记录,没权限的事情。故研究玩一下jenkins
安装
使用docker顺带搭建出来
docker run -it -d -u root -p 8090:8080 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v "$HOME":/home --name jenkins -v /webwww:/webwww jenkinsci/blueocean
需安装以下扩展
Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter、Role-Based Strategy
通过Publicsh over SSH我们创建与系统相关的通讯key
构建项目
输入需要获取的gitlab地址,需先配置通讯key
构建选择send files去指定服务器
每次更新好项目,按一下构建即马上发布代码到线上。当然也可以同步到测试机。