GitLab+Jenkins+Maven+Docker实现自动集成、打包、部署

GitLab+Jenkins+Maven+Docker实现自动集成、打包、部署

自动集成流程:


1. 开发人员将代码上传到Gitlab代码管理平台
2. 创建jenkins自动化任务,安装maven、gitlab webhook插件实现自动检测代码管理平台的项目代码变动,自动进行打包、部署。
3. 将打好的jar包发布到docker上

流程图:


在这里插入图片描述

环境准备

IP 服务 配置
192.168.1.10 GitLab、Maven、JDK、Git 2C4G
192.168.1.20 Jenkins、Maven、JDK、Git 2C4G
192.168.1.30 Docker 2C4G

Java环境安装


参考链接?https://blog.csdn.net/weixin_46152207/article/details/114528939

Git工具安装


参考链接?
https://blog.csdn.net/weixin_46152207/article/details/114526410

Maven工具安装


参考链接?
https://blog.csdn.net/weixin_46152207/article/details/114528918

GitLab代码管理仓库安装


详细安装步骤链接?

Jenkins自动集成工具安装


详细安装步骤链接?

Docker安装

详细安装步骤参考链接?

三台服务器进行免密登录

gitlab

ssh-keygen
ssh-copy-id -i 192.168.1.20
ssh-copy-id -i 192.168.1.30

jenkins

ssh-keygen
ssh-copy-id -i 192.168.1.10
ssh-copy-id -i 192.168.1.30

docker

ssh-keygen
ssh-copy-id -i 192.168.1.10
ssh-copy-id -i 192.168.1.20

GitLab+Jenkins+Maven+Docker整合

Gitlab创建一个新的项目

在这里插入图片描述

GitLab部署SSH密钥

gitlab服务器获取密钥

ssh-keygen #回车 刚才做过免密登录就不需要操作了

查看公钥
在这里插入图片描述
进入gitlab页面进行设置密钥
在这里插入图片描述

Jenkins创建任务

记得安装maven插件、gitlab webhook插件
没有maven插件不能创建maven项目
没有gitlab webhook插件,不能检测gitlab仓库代码变动实现自动计划

新建maven项目
在这里插入图片描述
在这里插入图片描述
源码管理
复制GitLab中discovery项目的SSH地址
在这里插入图片描述
在这里插入图片描述
报错:无法进行链接
添加凭证
在这里插入图片描述
查看gitlab服务器上的密钥
在这里插入图片描述
在这里插入图片描述
选择刚才创建的凭证
在这里插入图片描述
构建触发器
选择当GitLab的项目中代码变化时,Jenkins进行构建任务

图中的URL是在GitLab的设置中需要使用的
在这里插入图片描述
点击触发器中的“高级”,生成一串token值,用于GitLab与Jenkins集成使用
在这里插入图片描述
Build
执行构建时,对项目进行打包
在这里插入图片描述
Post Steps
当构建运行成功后,将jar包传送到tomcat主机的tomcat网页根目录下自动部署

scp /var/lib/jenkins/workspace/discovery/target/*.jar root@192.168.1.30:/root/

在这里插入图片描述

进入项目中,进行与Jenkins的集成
在这里插入图片描述
这里的URL和token值就是在Jenkins的任务配置时,构建触发器
在这里插入图片描述
在这里插入图片描述

生成测试项目

gitlab服务器拖入项目包,进行上传代码
上传代码成功后,jenkins自动化任务就会进行执行

 cd nego-web-dev/
 git init
 git add .
 git config --global user.email "zidingyi@gmail.com"
 git config --global user.name "zidingyi"
  git commit -m "discovery"
 git remote add discovery git@192.168.1.10:root/discovery.git
  git push -u discovery  master

成功发布到docker主机上

在这里插入图片描述
在这里插入图片描述

编写自动部署脚本

此次脚本编写较简单,就是为了达到实验目的,投入使用的话再根据自己的需要进行增加功能!

docker

[root@docker ~]# cat update.sh 
#!/bin/bash
echo "+-------------------------------------+"
echo "| 服务发布脚本 |"
echo "+-------------------------------------+"
jar=`ls | grep jar$`
name=`ls | grep jar$ | awk -F '-1' '{print $1}'`
image=$name':latest'
dockerfile () {
   
cat > dockerfile <<EOF FROM java:8 ADD ./$jar /data/$jar WORKDIR /data/ CMD ["sh","-c","java -jar $jar"] EOF
}
images () {
   
docker build -t $image .
}
fabu () {
   
docker run -itd --name $name $image
}
clearfile () {
   
 rm -rf /app/dockerfile
}
dockerfile
images
if [ $name == nego-web ]
then
 docker run -itd -p 8761:8761 --name $name $image
fi
chmod +x update.sh

jenkins

[root@jenkins ~]# cat update.sh 
scp /var/lib/jenkins/workspace/discovery/target/*.jar root@192.168.1.30:/root/
ssh 192.168.1.30 /root/update.sh

在这里插入图片描述

测试模拟项目发布

在这里插入图片描述

成功

在这里插入图片描述

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101804.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • docker启动报错Error starting daemon: Error initializing network controller:…….Iptables not found

    docker启动报错Error starting daemon: Error initializing network controller:…….Iptables not found

    2021年6月4日
  • docker 镜像启动命令_宿主机ping不通docker

    docker 镜像启动命令_宿主机ping不通dockerdockerrun:创建一个新的容器并运行一个命令语法dockerrun[OPTIONS]IMAGE[COMMAND][ARG…]OPTIONS说明: -astdin:指定标准输入输出内容类型,可选STDIN/STDOUT/STDERR三项; -d:后台运行容器,并返回容器ID; -i:以交互模式运行容器,通常与-t同时使用; -P:随机端口映射,容器内部端口随机映射到主机的端口 -p:指定端口映射,格式为:主…

    2022年9月23日
  • docker部署web项目_docker web程序本地化

    docker部署web项目_docker web程序本地化前言前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用docker构建一个web应用程序。我们将在docker容器中运行一个PythonFlask应用来运行一个web

    2022年7月31日
  • 【云原生】第十二篇–docker容器镜像仓库Harbor部署[通俗易懂]

    【云原生】第十二篇–docker容器镜像仓库Harbor部署[通俗易懂]由于国内访问国外的容器镜像仓库速度比较慢,因此国内企业创建了容器镜像加速器,以方便国内用户使用容器镜像。Harbor是VMware公司开源的企业级DockerRegistry项目,其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(RoleBasedAccessControl),AD/LDAP集成、以及审计日志(Auditlogging)等企业用户需求的功能,同时还原生支持中文。…

    2022年10月25日
  • Docker暴露2375端口导致服务器被攻击解决方法!

    Docker暴露2375端口导致服务器被攻击解决方法!相信了解过dockerremoteAPI的同学对2375端口都不陌生了,2375是docker远程操控的默认端口,通过这个端口可以直接对远程的dockerdaemon进行操作。当$HOST主机以dockerdaemon-H=0.0.0.0:2375方式启动daemon时,可以在外部机器对$HOST的dockerdaemon进行直接操作:docker-Htcp://$HOS…

    2022年4月29日
  • Docker镜像自动执行脚本.sh

    Docker镜像自动执行脚本.sh由于博客现在在docker中部署的,每次打包部署,需要停掉旧容器->删除旧容器->删除镜像->将新的jar包打包成镜像->再次运行,每次发布都需要重复的执行此操作,于是想将所有命令写成脚本,jar包上传之后,运行脚本即可。命令:app_name=’java-blog’app_port=’8081’# 停止正在运行的容器echo ‘……stop container……’docker stop ${app_name}# 删除容器echo ‘…..

    2022年6月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号