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

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

7. 创建任务


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


20190122162040631.png


源码管理选择Git


20190122162300387.png


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


20190122162312720.png


添加授权


20190122162326119.png


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


8. 构建触发器


20190122162404595.png



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


复制url然后打开Gitlab


20190122162430648.png


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


9. 构建任务拉取代码


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


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


whereis git


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


20190122162528999.png


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


20190122162542954.png


点击Test push


Jenkins自动进行了第4次构建


20190122162558485.png


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


10. Maven构建项目


点击任务详情页面的Configure


20190122162635638.png


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


20190122162656699.png


添加Maven打包命令


clean install -Dmaven.test.skip=true


20190122162710705.png


11. Docker脚本部署

然后添加shell脚本


20190122162826883.png


# 先删除之前的容器
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插件详解

<plugin>
  <groupId>com.spotify</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <version>0.4.13</version>
  <configuration>
    <!--imageName 用于指定Docker镜像的完整名称 groupoId为仓库名 artifactId为镜像名 version为标签名-->
    <imageName>${project.groupId}/${project.artifactId}:${project.version}</imageName>
    <!-- 用与指定Dockerfile文件所在的位置,project.build.outputDirectory 为了读取经过Maven资源过滤后的Dockerfile文件-->
    <dockerDirectory>${project.build.outputDirectory}</dockerDirectory>
    <resources>
      <resource>
        <!--指定需要复制的根目录-->
        <directory>${project.build.directory}</directory>
        <!--用于指定需要复制的文件-->
        <include>${project.build.finalName}.jar</include>
      </resource>
    </resources>
  </configuration>
</plugin>

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镜像。

目录
相关文章
|
监控 jenkins Shell
jenkins结合gitlab实现CI(持续集成)
通过本文的介绍,我们详细了解了如何结合Jenkins和GitLab实现持续集成。从环境准备、插件配置到Pipeline任务创建和CI流程监控,每一步都提供了详细的操作步骤和示例代码。希望本文能帮助开发者快速搭建起高效的CI系统,提高项目开发效率和代码质量。
1611 9
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
241 10
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
2282 10
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
696 3
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
监控 jenkins 持续交付
Docker和Jenkins有什么不同
【10月更文挑战第18天】Docker和Jenkins有什么不同
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
1321 1
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
前端开发 Java Docker
使用Docker容器化部署Spring Boot应用程序
使用Docker容器化部署Spring Boot应用程序