目录⭐
自动集成流程:
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
测试模拟项目发布
成功
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101804.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...