Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目

我这边Docker、Jenkins、Gitlab 都已准备完毕,Jenkins和GItlab 都是用Docker起的

我们先进入Jenkins,插件什么的按他推荐的装就可以了,另外使用gitlab,还需要额外安装下面的插件

 

然后我们开始在Jenkins上创建项目

Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第1张图片

 Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第2张图片

 Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第3张图片

 Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第4张图片

 然后点保存,接下来操作GItlab,点到项目里面

Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第5张图片

Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第6张图片

 点击添加webhook ,会提示:Urlis blocked: Requests to the local network are not allowed

Gitlab 10.6 版本以后为了安全,默认不允许向本地网络发送webhook请求,可以修改默认值,我们管理员登录Gitlab

Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第7张图片

 Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第8张图片

 此时重新添加webhook,测试发送请求401,这是Jenkins和GItlab没有建立可信关系,打开Jenkins,创建一个token

Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第9张图片

 然后在Gitlab添加webhook时候,网址需要改一下格式:用户名:token@Jenkins生成的URL,

比如 admin:[email protected]:8088/project/Test

 点击保存,测试,提示“Hook executed successfully but returned HTTP 403

这个需要进入Jenkins里面,系统设置取消勾选 Enable authentication for '/project' end-point

Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第10张图片

然后重新测试,报了个满屏的错误  Hook executed successfully but returned HTTP 500

webhook的地址里面的project要换成job(我看很多都是project,查了才知道高版本的Jenkins有这个问题),修改地址,重新测试,发现终于报200成功了,但是Jenkins那边并没有反应,我的天,这又是什么鬼

查了一通发现地址后面需要追加/build,也就是完整的地址是

admin:[email protected]:8001/job/Test/build

username:token@ip:port/job/projectName/build

改完之后再次测试,gitlab这边报201,Jenkins也构建成功了

 

 后面我们继续去继续Jenkins里面配置项目

Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第11张图片

Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第12张图片

 此处目的是将java项目打包,继续新增构建步骤-执行shell,shell内容需要根据实际情况稍微变更,

还有就是java项目需要先有Dockerfile.

Docker+Jenkins+Gitlab+SpringBoot 自动化部署项目_第13张图片

cd test/
service_name="test"
service_prot=8080
tag=latest
#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
    echo "exist $SERVER_NAME image,IID=$IID"
    #删除镜像
    docker rmi -f $service_name
    echo "delete $SERVER_NAME image"
    #构建
    docker build -t $service_name .
    echo "build $SERVER_NAME image"
else
    echo "no exist $SERVER_NAME image,build docker"
    #构建
    docker build -t $service_name .
    echo "build $SERVER_NAME image"
fi
#查看容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
    echo "exist $SERVER_NAME container,CID=$CID"
    #停止
    docker stop $service_name
    #删除容器
    docker rm $service_name
else
    echo "no exist $SERVER_NAME container"
fi
#启动
docker run -d --name $service_name -p $service_prot:$service_prot $service_name:$tag

然后点击保存,此时提交代码,Jenkins会重新构建,删除旧镜像(如果已存在),创建新镜像并运行,如果还有问题,那就看日志,具体情况具体分析

你可能感兴趣的:(部署,jenkins,docker,gitlab)