CI/CD——在jenkins中使用pipeline方式自动化构建java项目jpresshttps://blog.csdn.net/xiaochenXIHUA/article/details/160957816CI/CD——在jenkins中自动化构建与部署java项目jpress的镜像且搭建一键部署gitlab与jenkins环境https://coffeemilk.blog.csdn.net/article/details/160831483?spm1001.2014.3001.5502一、spring Cloud与K8s内容说明Spring BootSpring Boot是应用开发层定位Java 应用开发框架快速构建独立可运行的单体 / 微服务。核心能力自动配置、内嵌服务器Tomcat/Jetty、一键打包Jar、简化依赖。一句话写服务的脚手架让你专注业务代码。Spring CloudSpring Cloud是分布式治理层定位基于 Spring Boot 的微服务治理工具集解决分布式系统的公共问题。核心能力服务发现Nacos/Eureka/Consul配置中心Nacos/Spring Cloud Config熔断 / 限流Sentinel/Resilience4j网关Spring Cloud Gateway调用链SleuthZipkin一句话管服务的工具箱让微服务之间可发现、可通信、可治理。KubernetesKubernetes是容器编排层定位基础设施层的容器编排平台管理容器化应用的全生命周期。核心能力调度部署Deployment/StatefulSet服务发现与负载均衡ServiceClusterIP/NodePort配置 / 秘钥管理ConfigMap/Secret自愈与扩缩容HPA、滚动更新、故障转移存储与网络PV、PVC、CNI一句话跑服务的操作系统不限语言统一管理所有容器应用。IstioIstio是服务网格把流量治理路由、熔断、限流、可观测性从 Spring Cloud 迁移到Istio业务代码无侵入。适合大规模、多语言微服务。总结Spring Boot写服务Java 微服务开发。Spring Cloud管服务分布式治理注册、配置、熔断、网关。K8s跑服务容器编排部署、调度、自愈、扩缩容。使用场景Spring Cloud与Kubernetes部分功能重合Spring Cloud侧重于开发Kubernetes侧重与运维。轻量场景Spring Boot K8s用 K8s 原生能力替代部分 Spring Cloud功能。复杂场景Spring Cloud K8s Istio开发治理 平台运维 流量治理。推荐组合✅推荐使用Spring bootKubernetes使用Spring boot构建微服务然后通过k8s管理微服务二、jenkins构建流程实现spring-boot-file-upload项目的自动化编译部署2.1、在gitlab中创建项目仓库先在gitlab中创建一个名为【spring-boot-file-upload】的项目即登录到gitlab的web管理界面点击左上角的【项目】--【新建项目】--【创建空白项目】--输入项目名称【spring-boot-file-upload】并选择组织ops--【新建项目】并获取到项目的ssh地址即打开项目然后点击项目左侧的【代码】即可获取到项目链接如下图所示#将dockercompose-springboot-mysql-nginx源码提交到仓库中 #1-克隆gitlab仓库中的项目 git clone gitgitlab2.ck.com:ops/dockercompose-springboot-mysql-nginx.git #2-解压当前的dockercompose-springboot-mysql-nginx源码 tar -zxvf dockercompose-springboot-mysql-nginx-master.tar.gz #3-将源码复制到从gitlab仓库克隆到本地的项目中 cp -r dockercompose-springboot-mysql-nginx-master/* dockercompose-springboot-mysql-nginx/ #4-进入到从gitlab仓库克隆到本地项目中将源码内容提交到仓库中 cd dockercompose-springboot-mysql-nginx git add . git commit -m init docker-compose-springboot-mysql-nginx git status git branch git remote -v git push origin main2.2、上传spring-boot-file-upload源码到gitlab仓库中#上传spring-boot-file-upload源码到gitlab中 #1-将spring-boot-file-upload的源码放置到指定位置并解压 tar -zxvf spring-boot-file-upload-master.tar.gz #2-从远程仓库克隆项目到本地 git clone gitgitlab2.ck.com:ops/spring-boot-file-upload.git #3-将本地解压好的spring-boot-file-upload的源码文件内容都复制到刚克隆下来的仓库中 cp -r spring-boot-file-upload-master/* spring-boot-file-upload/ #4-将仓库内容提交到暂存区缓存并提交到仓库中提交最后推送到远程仓库中 cd spring-boot-file-upload git add . git commit -minit spring-boot-file-upload git status git branch git remote -v git push origin main #5-到gitlab的该项目下查看内容是否上传了注意若使用ssh方式克隆或推送项目到gitlab仓库中提示“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that a host key has just been changed.The fingerprint for the ECDSA key sent by the remote host isSHA256:QjJSTZTFWXMqcc5q8Ps996BS24IAZPbbBwu9WtoriY.Please contact your system administrator.Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending ECDSA key in /root/.ssh/known_hosts:3Password authentication is disabled to avoid man-in-the-middle attacks.Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.”即警告远程主机标识已更改有人可能正在做坏事有人可能正在窃听你的通话中间人攻击也有可能是主机密钥刚刚被更改。远程主机发送的ECDSA密钥的指纹是SHA256:QjJSTZTFWXMqcc5q8Ps996BS24IAZPbbBwu9WtoriY。请联系您的系统管理员。在 /root/.ssh/known_hosts 中添加正确的主机密钥以消除此消息。/root/.ssh/known_hosts:3中的违规ECDSA密钥密码认证已禁用以避免中间人攻击。键盘交互式认证已禁用以避免中间人攻击。这是因为当前服务器“本地保存了旧的 GitLab 服务器密钥现在服务器密钥变了SSH 认为可能是中间人攻击所以阻止连接”解决方法是删除旧密钥重新生成新密钥#解决ssh连接“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ”错误方法 #1-删除旧密钥 ssh-keygen -R gitlab2.ck.com #2-重新连接生成新密钥结果显示Welcome to GitLab, 当前用户名!则表示成功 ssh -T gitgitlab2.ck.com2.3、jenkins中配置流水线部署登录到jenkins的web后台选择左上角的【 新建Item】--输入任务名称(如spring-boot-file-upload)并选择【Freestyle project】--点击【确定】按钮后进入流水线编辑界面配置流水线配置项说明General1、在【描述】下的输入框输入该流水线的介绍方便知道该流水线是做什么的如spring-boot-file-upload2、勾选【使用自定义的工作空间】在【目录】下可以输入绝对路径与相对路径相对jenkins所在的基础路径【如/data/jenkins/data】;源码管理1、在【Repository URL】下的输入框输入需操作仓库的git地址如gitgitlab2.ck.com:ops/spring-boot-file-upload.git2、选择【Credentials】下配置好的凭据3、指定分支如*/main构建触发器看是否需要根据自己项目情况配置触发器如一旦项目被推送内容就触发这里没有构建环境勾选【With Ant】然后选择JDK下的【jdk17】构建1、选择【Invoke top-level Maven targets】2、选择Maven的版本如maven3.8.8;3、【目标】下输入命令clean install -Dmaven.test.skiptrue构建后操作1、选择【Send build artifacts over SSH】表示通过ssh发送构建的成果到应用服务器2、设置传送的目标【Source files的值是target/*.jar】【Remove prefix的值是target/】【Exec command】的命令是set e echo pkill -f spring-boot-file-upload || true nohup /usr/bin/java -jar /usr/local/spring-boot-file-upload-1.0.jar /usr/local/spring.log 21 | at now命令解析说明set eset e命令出错 →继续往下执行不中断默认set -e命令出错 → 脚本直接停止强制关闭旧进程pkill -f spring-boot-file-upload || truepkill -f强制杀死包含这个名字的进程|| true杀不到也不报错、不中断非常重要前面命令执行完无论成功失败继续执行后面的命令。nohup不挂断运行关闭终端 / 退出 SSH →程序依然在后台运行这是 Linux 后台启动 SpringBoot 的标准方式-jar/usr/bin/java -jar /usr/local/spring-boot-file-upload-1.0.jar使用java运行SpringBoot jar 包。 /usr/local/spring.log 21 把日志输出到文件“/usr/local/spring.log”中覆盖输入21把错误信息也一起写入日志后台运行| at now|把前面的命令传递给 at 工具at now立即在后台执行这条启动命令效果 异步执行不卡住当前终端三、jenkins构建流程实现spring-boot项目制作为docker镜像发布3.1、在gitlab中创建spring-boot项目并将项目源码推动到仓库中先在gitlab中创建一个名为【dockercompose-springboot-mysql-nginx】的项目即登录到gitlab的web管理界面点击左上角的【项目】--【新建项目】--【创建空白项目】--输入项目名称【dockercompose-springboot-mysql-nginx】并选择组织ops--【新建项目】并获取到项目的ssh地址即打开项目然后点击项目左侧的【代码】即可获取到项目链接如下图所示#上传dockercompose-springboot-mysql-nginx源码到gitlab中 #1-从gitlab远程仓库克隆dockercompose-springboot-mysql-nginx项目到本地 git clone gitgitlab2.ck.com:ops/dockercompose-springboot-mysql-nginx.git #2-将dockercompose-springboot-mysql-nginx的源码放置到指定位置并解压 tar -zxvf dockercompose-springboot-mysql-nginx-master.tar.gz #3-将本地解压好的dockercompose-springboot-mysql-nginx的源码文件内容都复制到刚克隆下来的仓库中 cp -r dockercompose-springboot-mysql-nginx-master/* dockercompose-springboot-mysql-nginx/ #4-将仓库内容提交到暂存区缓存并提交到仓库中提交最后推送到远程仓库中 cd dockercompose-springboot-mysql-nginx git add . git commit -m init docker-compose-springboot-mysql-nginx git status git branch git remote -v git push origin main #5-到gitlab的dockercompose-springboot-mysql-nginx项目下查看内容是否上传了3.2、在gitlab中创建spring-boot的流水线项目先在gitlab中创建一个名为【jenkinsfile-dockercompose-springboot-mysql-nginx】的项目即登录到gitlab的web管理界面点击左上角的【项目】--【新建项目】--【创建空白项目】--输入项目名称【jenkinsfile-dockercompose-springboot-mysql-nginx】并选择组织ops--【新建项目】并获取到项目的ssh地址即打开项目然后点击项目左侧的【代码】即可获取到项目链接如下图所示3.3、在jenkins中创建spring-boot制作docker镜像并发布的流水线登录到jenkins的web后台选择左侧的【打开Blue Ocean】--【流水线--创建流水线】--进入创建流水线界面配置创建流水线配置内容说明选择代码仓库由于我们都是使用git操作gitlab仓库因此直接选择【Git】即可。连接到Git仓库1、在仓库URL下面输入需要创建该流水线的项目地址如gitgitlab2.ck.com:ops/jenkinsfile-dockercompose-springboot-mysql-ngin.git2、将显示的【ssh-rsa xxxx】内容复制一份点击“Copy to clipboard”到gitlab中3.4、在jenkins中配置spring-boot制作docker镜像并发布的流水线在创建好的流水线中进行如下配置3.4.1、Start配置点击Start节点然后在右侧的【流水线设置】中配置全局变量springversionv1.03.4.2、创建git clone节点并配置点击Start后的【】号图标新增节点名称是git clone然后点击右侧的【添加步骤】进行如下配置git clone节点配置说明Allocate workspace分配工作区Dir【/data/jenkins/docker-springboot-mysqlnginx】在工作区下添加步骤【Git】--【Url:gitgitlab2.ck.com:ops/dockercompose-springboot-mysql-nginx.git】--【Branch:main】【Shell Script】的命令cd app export JAVA_HOME/data/openjdk17 export PATH$JAVA_HOME/bin:$PATH /usr/local/maven/bin/mvn clean install -Dmaven.test.skiptrue3.4.3、创建docker build节点并配置点击【git clone】后的【】号图标新增节点名称是docker build然后点击右侧的【添加步骤】进行如下配置docker build节点的配置说明Allocate workspace分配工作区Dir【/data/jenkins/docker-springboot-mysqlnginx】在工作区下添加步骤【shell script】的命令cd app export DOCKER_BUILDKIT0 docker build -t gitlab2.ck.com:5050/ops/dockercompose-springboot-mysql-nginx:${springversion} .cd app export DOCKER_BUILDKIT0 docker build -t gitlab2.ck.com:5050/ops/dockercompose-springboot-mysql-nginx:${springversion} .3.4.4、创建docker push节点并配置点击【docker build】后的【】号图标新增节点名称是docker build然后点击右侧的【添加步骤】进行如下配置添加【shell script】命令是docker login gitlab2.ck.com:5050 -u root -p coffeemilk.blog.csdn.net docker push gitlab2.ck.com:5050/ops/dockercompose-springboot-mysql-nginx:${springversion}3.5、在jenkins中将spring-boot制作为docker镜像发布登录到jenkins的web后台选择左上角的【 新建Item】--在任务界面输入任务的名称【deploy-springboot--mysqlnginx -docker】并选择【Freestyle project】后点击【确定】按钮--进入创建流水线界面配置流水线界面配置说明General描述的输入框输入该流水线的简要说明知道该流水线是做什么的如部署dockercompose-springboot-mysql-nginx项目的docker镜像到192.168.1.30应用服务器中This project is parameterized勾选并且添加参数【Multi-line String Parameter】。构建选择cd /data test -d compose || mkdir compose cd compose git clone gitgitlab2.ck.com:ops/dockercompose-springboot-mysql-nginx.git cd dockercompose-springboot-mysql-nginx cat docker-compose.yml EOF version: 3 services: nginx: container_name: v-nginx image: nginx:1.13 restart: always ports: - 80:80 - 445:445 volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./app:/app mysql: container_name: v-mysql image: mysql/mysql-server:5.7 environment: MYSQL_DATABASE: test MYSQL_ROOT_PASSWORD: root MYSQL_ROOT_HOST: % ports: - 3308:3306 restart: always app: restart: always build: ./app working_dir: /app volumes: - ./app:/app - ~/.m2:/root/.m2 expose: - 8080 depends_on: - nginx - mysql command: mvn clean spring-boot:run -Dspring-boot.run.profilesdocker EOF docker-compose down docker-compose up -d最后登录部署服务器查看mysql数据是否与浏览器上的数据一致mysql -uroot -p -h 192.168.1.30 -P 3308 show databases; use test; show tables; select * from visitor; exit
CI/CD——在jenkins中构建流程实现springboot项目的自动化构建与部署
CI/CD——在jenkins中使用pipeline方式自动化构建java项目jpresshttps://blog.csdn.net/xiaochenXIHUA/article/details/160957816CI/CD——在jenkins中自动化构建与部署java项目jpress的镜像且搭建一键部署gitlab与jenkins环境https://coffeemilk.blog.csdn.net/article/details/160831483?spm1001.2014.3001.5502一、spring Cloud与K8s内容说明Spring BootSpring Boot是应用开发层定位Java 应用开发框架快速构建独立可运行的单体 / 微服务。核心能力自动配置、内嵌服务器Tomcat/Jetty、一键打包Jar、简化依赖。一句话写服务的脚手架让你专注业务代码。Spring CloudSpring Cloud是分布式治理层定位基于 Spring Boot 的微服务治理工具集解决分布式系统的公共问题。核心能力服务发现Nacos/Eureka/Consul配置中心Nacos/Spring Cloud Config熔断 / 限流Sentinel/Resilience4j网关Spring Cloud Gateway调用链SleuthZipkin一句话管服务的工具箱让微服务之间可发现、可通信、可治理。KubernetesKubernetes是容器编排层定位基础设施层的容器编排平台管理容器化应用的全生命周期。核心能力调度部署Deployment/StatefulSet服务发现与负载均衡ServiceClusterIP/NodePort配置 / 秘钥管理ConfigMap/Secret自愈与扩缩容HPA、滚动更新、故障转移存储与网络PV、PVC、CNI一句话跑服务的操作系统不限语言统一管理所有容器应用。IstioIstio是服务网格把流量治理路由、熔断、限流、可观测性从 Spring Cloud 迁移到Istio业务代码无侵入。适合大规模、多语言微服务。总结Spring Boot写服务Java 微服务开发。Spring Cloud管服务分布式治理注册、配置、熔断、网关。K8s跑服务容器编排部署、调度、自愈、扩缩容。使用场景Spring Cloud与Kubernetes部分功能重合Spring Cloud侧重于开发Kubernetes侧重与运维。轻量场景Spring Boot K8s用 K8s 原生能力替代部分 Spring Cloud功能。复杂场景Spring Cloud K8s Istio开发治理 平台运维 流量治理。推荐组合✅推荐使用Spring bootKubernetes使用Spring boot构建微服务然后通过k8s管理微服务二、jenkins构建流程实现spring-boot-file-upload项目的自动化编译部署2.1、在gitlab中创建项目仓库先在gitlab中创建一个名为【spring-boot-file-upload】的项目即登录到gitlab的web管理界面点击左上角的【项目】--【新建项目】--【创建空白项目】--输入项目名称【spring-boot-file-upload】并选择组织ops--【新建项目】并获取到项目的ssh地址即打开项目然后点击项目左侧的【代码】即可获取到项目链接如下图所示#将dockercompose-springboot-mysql-nginx源码提交到仓库中 #1-克隆gitlab仓库中的项目 git clone gitgitlab2.ck.com:ops/dockercompose-springboot-mysql-nginx.git #2-解压当前的dockercompose-springboot-mysql-nginx源码 tar -zxvf dockercompose-springboot-mysql-nginx-master.tar.gz #3-将源码复制到从gitlab仓库克隆到本地的项目中 cp -r dockercompose-springboot-mysql-nginx-master/* dockercompose-springboot-mysql-nginx/ #4-进入到从gitlab仓库克隆到本地项目中将源码内容提交到仓库中 cd dockercompose-springboot-mysql-nginx git add . git commit -m init docker-compose-springboot-mysql-nginx git status git branch git remote -v git push origin main2.2、上传spring-boot-file-upload源码到gitlab仓库中#上传spring-boot-file-upload源码到gitlab中 #1-将spring-boot-file-upload的源码放置到指定位置并解压 tar -zxvf spring-boot-file-upload-master.tar.gz #2-从远程仓库克隆项目到本地 git clone gitgitlab2.ck.com:ops/spring-boot-file-upload.git #3-将本地解压好的spring-boot-file-upload的源码文件内容都复制到刚克隆下来的仓库中 cp -r spring-boot-file-upload-master/* spring-boot-file-upload/ #4-将仓库内容提交到暂存区缓存并提交到仓库中提交最后推送到远程仓库中 cd spring-boot-file-upload git add . git commit -minit spring-boot-file-upload git status git branch git remote -v git push origin main #5-到gitlab的该项目下查看内容是否上传了注意若使用ssh方式克隆或推送项目到gitlab仓库中提示“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that a host key has just been changed.The fingerprint for the ECDSA key sent by the remote host isSHA256:QjJSTZTFWXMqcc5q8Ps996BS24IAZPbbBwu9WtoriY.Please contact your system administrator.Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending ECDSA key in /root/.ssh/known_hosts:3Password authentication is disabled to avoid man-in-the-middle attacks.Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.”即警告远程主机标识已更改有人可能正在做坏事有人可能正在窃听你的通话中间人攻击也有可能是主机密钥刚刚被更改。远程主机发送的ECDSA密钥的指纹是SHA256:QjJSTZTFWXMqcc5q8Ps996BS24IAZPbbBwu9WtoriY。请联系您的系统管理员。在 /root/.ssh/known_hosts 中添加正确的主机密钥以消除此消息。/root/.ssh/known_hosts:3中的违规ECDSA密钥密码认证已禁用以避免中间人攻击。键盘交互式认证已禁用以避免中间人攻击。这是因为当前服务器“本地保存了旧的 GitLab 服务器密钥现在服务器密钥变了SSH 认为可能是中间人攻击所以阻止连接”解决方法是删除旧密钥重新生成新密钥#解决ssh连接“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ”错误方法 #1-删除旧密钥 ssh-keygen -R gitlab2.ck.com #2-重新连接生成新密钥结果显示Welcome to GitLab, 当前用户名!则表示成功 ssh -T gitgitlab2.ck.com2.3、jenkins中配置流水线部署登录到jenkins的web后台选择左上角的【 新建Item】--输入任务名称(如spring-boot-file-upload)并选择【Freestyle project】--点击【确定】按钮后进入流水线编辑界面配置流水线配置项说明General1、在【描述】下的输入框输入该流水线的介绍方便知道该流水线是做什么的如spring-boot-file-upload2、勾选【使用自定义的工作空间】在【目录】下可以输入绝对路径与相对路径相对jenkins所在的基础路径【如/data/jenkins/data】;源码管理1、在【Repository URL】下的输入框输入需操作仓库的git地址如gitgitlab2.ck.com:ops/spring-boot-file-upload.git2、选择【Credentials】下配置好的凭据3、指定分支如*/main构建触发器看是否需要根据自己项目情况配置触发器如一旦项目被推送内容就触发这里没有构建环境勾选【With Ant】然后选择JDK下的【jdk17】构建1、选择【Invoke top-level Maven targets】2、选择Maven的版本如maven3.8.8;3、【目标】下输入命令clean install -Dmaven.test.skiptrue构建后操作1、选择【Send build artifacts over SSH】表示通过ssh发送构建的成果到应用服务器2、设置传送的目标【Source files的值是target/*.jar】【Remove prefix的值是target/】【Exec command】的命令是set e echo pkill -f spring-boot-file-upload || true nohup /usr/bin/java -jar /usr/local/spring-boot-file-upload-1.0.jar /usr/local/spring.log 21 | at now命令解析说明set eset e命令出错 →继续往下执行不中断默认set -e命令出错 → 脚本直接停止强制关闭旧进程pkill -f spring-boot-file-upload || truepkill -f强制杀死包含这个名字的进程|| true杀不到也不报错、不中断非常重要前面命令执行完无论成功失败继续执行后面的命令。nohup不挂断运行关闭终端 / 退出 SSH →程序依然在后台运行这是 Linux 后台启动 SpringBoot 的标准方式-jar/usr/bin/java -jar /usr/local/spring-boot-file-upload-1.0.jar使用java运行SpringBoot jar 包。 /usr/local/spring.log 21 把日志输出到文件“/usr/local/spring.log”中覆盖输入21把错误信息也一起写入日志后台运行| at now|把前面的命令传递给 at 工具at now立即在后台执行这条启动命令效果 异步执行不卡住当前终端三、jenkins构建流程实现spring-boot项目制作为docker镜像发布3.1、在gitlab中创建spring-boot项目并将项目源码推动到仓库中先在gitlab中创建一个名为【dockercompose-springboot-mysql-nginx】的项目即登录到gitlab的web管理界面点击左上角的【项目】--【新建项目】--【创建空白项目】--输入项目名称【dockercompose-springboot-mysql-nginx】并选择组织ops--【新建项目】并获取到项目的ssh地址即打开项目然后点击项目左侧的【代码】即可获取到项目链接如下图所示#上传dockercompose-springboot-mysql-nginx源码到gitlab中 #1-从gitlab远程仓库克隆dockercompose-springboot-mysql-nginx项目到本地 git clone gitgitlab2.ck.com:ops/dockercompose-springboot-mysql-nginx.git #2-将dockercompose-springboot-mysql-nginx的源码放置到指定位置并解压 tar -zxvf dockercompose-springboot-mysql-nginx-master.tar.gz #3-将本地解压好的dockercompose-springboot-mysql-nginx的源码文件内容都复制到刚克隆下来的仓库中 cp -r dockercompose-springboot-mysql-nginx-master/* dockercompose-springboot-mysql-nginx/ #4-将仓库内容提交到暂存区缓存并提交到仓库中提交最后推送到远程仓库中 cd dockercompose-springboot-mysql-nginx git add . git commit -m init docker-compose-springboot-mysql-nginx git status git branch git remote -v git push origin main #5-到gitlab的dockercompose-springboot-mysql-nginx项目下查看内容是否上传了3.2、在gitlab中创建spring-boot的流水线项目先在gitlab中创建一个名为【jenkinsfile-dockercompose-springboot-mysql-nginx】的项目即登录到gitlab的web管理界面点击左上角的【项目】--【新建项目】--【创建空白项目】--输入项目名称【jenkinsfile-dockercompose-springboot-mysql-nginx】并选择组织ops--【新建项目】并获取到项目的ssh地址即打开项目然后点击项目左侧的【代码】即可获取到项目链接如下图所示3.3、在jenkins中创建spring-boot制作docker镜像并发布的流水线登录到jenkins的web后台选择左侧的【打开Blue Ocean】--【流水线--创建流水线】--进入创建流水线界面配置创建流水线配置内容说明选择代码仓库由于我们都是使用git操作gitlab仓库因此直接选择【Git】即可。连接到Git仓库1、在仓库URL下面输入需要创建该流水线的项目地址如gitgitlab2.ck.com:ops/jenkinsfile-dockercompose-springboot-mysql-ngin.git2、将显示的【ssh-rsa xxxx】内容复制一份点击“Copy to clipboard”到gitlab中3.4、在jenkins中配置spring-boot制作docker镜像并发布的流水线在创建好的流水线中进行如下配置3.4.1、Start配置点击Start节点然后在右侧的【流水线设置】中配置全局变量springversionv1.03.4.2、创建git clone节点并配置点击Start后的【】号图标新增节点名称是git clone然后点击右侧的【添加步骤】进行如下配置git clone节点配置说明Allocate workspace分配工作区Dir【/data/jenkins/docker-springboot-mysqlnginx】在工作区下添加步骤【Git】--【Url:gitgitlab2.ck.com:ops/dockercompose-springboot-mysql-nginx.git】--【Branch:main】【Shell Script】的命令cd app export JAVA_HOME/data/openjdk17 export PATH$JAVA_HOME/bin:$PATH /usr/local/maven/bin/mvn clean install -Dmaven.test.skiptrue3.4.3、创建docker build节点并配置点击【git clone】后的【】号图标新增节点名称是docker build然后点击右侧的【添加步骤】进行如下配置docker build节点的配置说明Allocate workspace分配工作区Dir【/data/jenkins/docker-springboot-mysqlnginx】在工作区下添加步骤【shell script】的命令cd app export DOCKER_BUILDKIT0 docker build -t gitlab2.ck.com:5050/ops/dockercompose-springboot-mysql-nginx:${springversion} .cd app export DOCKER_BUILDKIT0 docker build -t gitlab2.ck.com:5050/ops/dockercompose-springboot-mysql-nginx:${springversion} .3.4.4、创建docker push节点并配置点击【docker build】后的【】号图标新增节点名称是docker build然后点击右侧的【添加步骤】进行如下配置添加【shell script】命令是docker login gitlab2.ck.com:5050 -u root -p coffeemilk.blog.csdn.net docker push gitlab2.ck.com:5050/ops/dockercompose-springboot-mysql-nginx:${springversion}3.5、在jenkins中将spring-boot制作为docker镜像发布登录到jenkins的web后台选择左上角的【 新建Item】--在任务界面输入任务的名称【deploy-springboot--mysqlnginx -docker】并选择【Freestyle project】后点击【确定】按钮--进入创建流水线界面配置流水线界面配置说明General描述的输入框输入该流水线的简要说明知道该流水线是做什么的如部署dockercompose-springboot-mysql-nginx项目的docker镜像到192.168.1.30应用服务器中This project is parameterized勾选并且添加参数【Multi-line String Parameter】。构建选择cd /data test -d compose || mkdir compose cd compose git clone gitgitlab2.ck.com:ops/dockercompose-springboot-mysql-nginx.git cd dockercompose-springboot-mysql-nginx cat docker-compose.yml EOF version: 3 services: nginx: container_name: v-nginx image: nginx:1.13 restart: always ports: - 80:80 - 445:445 volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./app:/app mysql: container_name: v-mysql image: mysql/mysql-server:5.7 environment: MYSQL_DATABASE: test MYSQL_ROOT_PASSWORD: root MYSQL_ROOT_HOST: % ports: - 3308:3306 restart: always app: restart: always build: ./app working_dir: /app volumes: - ./app:/app - ~/.m2:/root/.m2 expose: - 8080 depends_on: - nginx - mysql command: mvn clean spring-boot:run -Dspring-boot.run.profilesdocker EOF docker-compose down docker-compose up -d最后登录部署服务器查看mysql数据是否与浏览器上的数据一致mysql -uroot -p -h 192.168.1.30 -P 3308 show databases; use test; show tables; select * from visitor; exit