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

目录
相关文章
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
13天前
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
32 5
|
20天前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
39 3
|
24天前
|
前端开发 Java Docker
使用Docker容器化部署Spring Boot应用程序
使用Docker容器化部署Spring Boot应用程序
|
2月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
26天前
|
Java Docker 微服务
利用Docker容器化部署Spring Boot应用
利用Docker容器化部署Spring Boot应用
44 0
|
2月前
|
Java Docker 微服务
SpringBoot微服务打包Docker镜像
SpringBoot微服务打包Docker镜像
75 11
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
76 0
|
2月前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
|
2月前
|
JavaScript 测试技术 持续交付
使用 GitLab CI/CD 管道自动化部署 Web 应用
【10月更文挑战第2天】使用 GitLab CI/CD 管道自动化部署 Web 应用
60 0