关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

Jenkins+Docker+GitLab+Springboot自动化部署(三)

发布时间:2023-06-26 18:59:59

7. 创建任务


这里可以创建自由风格的任务或者Maven任务都可以



源码管理选择Git



打开Gitlab中的测试springboot项目复制项目地址



添加授权



这里采用用户名+密码验证的方式即可


8. 构建触发器




选择当代码提交时自动构建,点击Generate 生成,获得Jenkins的Token


复制url然后打开Gitlab



复制URL和Token 到这个地方点击Add Webhook


9. 构建任务拉取代码


点击立即构建即可 拉取Gitlab上的代码到本地


前两次失败是由于Git的路径配置错误,于是用


whereis git


重新查询了下路径,重新配置全局工具



然后测试 我的Gitlab提交是否回同步代码到Jenkins



点击Test push


Jenkins自动进行了第4次构建



至此,GitLab到Jenkins已经全部打通了,接下来看Jenkins的代码如何部署。


10. Maven构建项目


点击任务详情页面的Configure



在Build中选择调用顶层Maven构建项目



添加Maven打包命令


clean install -Dmaven.test.skip=true



11. Docker脚本部署

然后添加shell脚本



# 先删除之前的容器 echo "remobe old container" cid=$(docker ps -a | grep dockerspringboot | awk '{print $1}'| xargs) if [ $cid ] then echo "aaaaaaaaaaaa" echo "ccccccccc" docker rm -f $cid # 删除之前的镜像 echo "romove old image" docker rmi dockerspringboot else echo "no container now" fi # 构建镜像 mvn docker:build # 打印当前镜像 echo "current docker images" docker images | grep dockerspringboot # 启动容器 echo "start container" docker run -p 8010:8010 -d --name myspringboot dockerspringboot # 打印当前容器 echo "current container" docker ps -a | grep dockerspringboot echo "star service success!"

   

4) 测试

在GitLab中使用push event,然后在Jenkins中可以看到项目自动进入构建状态

查看Jenkins控制台输出

打开浏览器访问我们的网址

大功告成!

总结

1) GitLab单独Docker化

关于这套部署环境的改良,可以把GitLab安装放在单独的docker容器中,减少主服务器占用资源。

2) 远程推送私库

如果需要做到部署环境与线上环境分离,可以在pom文件中配置docker私库。同时还需要添加两台主机的sshkey。


需要先新增Maven属性


  172.0.0.1:50000



然后把${docker.registry}属性作为imageName的前缀


docker.registry/{docker.registry}/{project.groupId}/project.artifactId:{project.artifactId}:{project.version}


最后执行mvn docker:build docker:push

3)Docker-Maven插件详解

 com.spotify docker-maven-plugin 0.4.13    ${project.groupId}/${project.artifactId}:${project.version}   ${project.build.outputDirectory}     ${project.build.directory}   ${project.build.finalName}.jar

   

4) 在Jenkins容器中运行Docker命令

在Jenkins中运行docker命令有4中方式

不使用任何Jenkins镜像,直接在宿主机上安装Jenkins、Docker。本文采用的就是此种方式。

不适用官方提供的Jenkins镜像,自己构造一个带有Docker服务的Jenkins镜像。

使用Docker-in-Docker(DinD)方案在Docker容器中运行其他Docker容器。这两个Docker容器是父子关系。DockerHub中i给你提供了Jenkins的DinD镜像。

使用Docker-outside-of-Docker(DooD)方案,在Docker容器中创建宿主机上的Docker容器,这两个容器是兄弟关系。DockerHub中提过了Jenkins的DooD镜像。


/template/Home/leiyu/PC/Static