CI/CD构建利器 Jenkins

2020/05/20 posted in  测试
Tags:  #linux #docker

传统的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去指定服务器

每次更新好项目,按一下构建即马上发布代码到线上。当然也可以同步到测试机。