我这边Docker、Jenkins、Gitlab 都已准备完毕,Jenkins和GItlab 都是用Docker起的
我们先进入Jenkins,插件什么的按他推荐的装就可以了,另外使用gitlab,还需要额外安装下面的插件
然后我们开始在Jenkins上创建项目
然后点保存,接下来操作GItlab,点到项目里面
点击添加webhook ,会提示:Urlis blocked: Requests to the local network are not allowed
Gitlab 10.6 版本以后为了安全,默认不允许向本地网络发送webhook请求,可以修改默认值,我们管理员登录Gitlab
此时重新添加webhook,测试发送请求401,这是Jenkins和GItlab没有建立可信关系,打开Jenkins,创建一个token
然后在Gitlab添加webhook时候,网址需要改一下格式:用户名:token@Jenkins生成的URL,
比如 admin:11407ac17aa497ee8a14038be68db24425@127.0.0.1:8088/project/Test
点击保存,测试,提示“Hook executed successfully but returned HTTP 403
这个需要进入Jenkins里面,系统设置取消勾选 Enable authentication for '/project' end-point
然后重新测试,报了个满屏的错误 Hook executed successfully but returned HTTP 500
webhook的地址里面的project要换成job(我看很多都是project,查了才知道高版本的Jenkins有这个问题),修改地址,重新测试,发现终于报200成功了,但是Jenkins那边并没有反应,我的天,这又是什么鬼
查了一通发现地址后面需要追加/build,也就是完整的地址是
admin:11407ac17aa497ee8a14038be68db24425@127.0.0.1:8001/job/Test/build
username:token@ip:port/job/projectName/build
改完之后再次测试,gitlab这边报201,Jenkins也构建成功了
后面我们继续去继续Jenkins里面配置项目
此处目的是将java项目打包,继续新增构建步骤-执行shell,shell内容需要根据实际情况稍微变更,
还有就是java项目需要先有Dockerfile.
-
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会重新构建,删除旧镜像(如果已存在),创建新镜像并运行,如果还有问题,那就看日志,具体情况具体分析
转载:https://blog.csdn.net/z_xiaoluan/article/details/128327420