jenkins下微服务的cicd流程

一.cicd流程

1.在jenkins控制台中为微服务项目创建流水线项目 流程依赖于项目中的Jenkinsfile文件

2.定位到Jenkinsfile文件内容:

2.1.从git仓库拉取代码 拉取的代码默认会保存到jenkins容器的/var/jenkins_home/workspace目录下

2.2.编译所有微服务项目

2.3.基于每一个微服务项目的dockerfile构建镜像、然后再上传镜像到远程镜像仓库中(我这里所使用的是腾讯云的镜像仓库)

2.4.部署项目到远程服务器(我这里使用的就是jenkins容器所在的宿主机/虚拟机 没有另外弄一台云服务器了) 他这里依赖的是publish over ssh插件来进行项目部署的、因此部署的远程服务器也是在jenkins控制台->系统配置中的publish over ssh中来配置的路径

2.5.执行deploy.sh文件 其中 会从镜像仓库中拉取镜像然后运行为容器 这个过程就是docker部署(和tomcat部署有所不同)

2.6.最后你就可以访问远程服务器中的微服务项目

3.注意:

3.1.我们在Jenkinsfile文件中的构建镜像 & 上传镜像步骤中所执行的docker命令是在jenkins容器中执行的 因此要求jenkins容器需要拥有docker命令 而之前我创建jenkins容器时执行的命令

bash 复制代码
# -u指定的是容器的用户名 -d表示后台运行 -p表示容器和宿主机的端口映射(便于宿主机访问容器服务时进行转发) -v表示利用映射关系将持久化到外部宿主机的数据加载到容器中(避免因为容器关闭而导致容器中的临时数据丢失) -e用于配置容器的环境变量
# 现在jenkinsci/blueocean下载插件会失败 所以需要替换成jenkins/jenkins
docker run \
  -u root \
  -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  -v /usr/local/maven-3.6.3:/usr/local/maven-3.6.3 \
  -v /var/run/docker.sock:/var/run/docker.sock \ # 这里除了让容器挂载宿主机的docker.sock以外 还需要让容器下载docker.io后容器才能使用docker命令
  -e MAVEN_HOME=/usr/local/maven-3.6.3 \
  jenkinsci/blueocean

在此命令中 我们已经让jenkins容器挂载了宿主机的docker.sock 这样还不够 还需要让jenkins容器安装docker.io才行

3.2.jdk的安装--我的jenkins容器默认的jdk是21 可能和我代码中的某些依赖版本不兼容 我需要使用到jdk8 因此我们可以在jenkins控制台->全局配置中设置一个jdk 然后在Jenkinsfile文件中通过tools来重置jdk版本

3.3.maven的安装--我的jenkins容器中由于挂载了宿主机的maven 所以不用另行安装了

3.4.publish over ssh插件的工作原理--让jenkins容器能够凭借ssh连接到远程服务器 其中要求jenkins容器生成公钥+私钥(在/root/.ssh目录下分别对应id_rsa.pub和id_rsa)、并要求远程服务器拥有公钥(放置于authorized_keys文件中)

3.5.在为微服务项目创建jenkins控制台中的流水线项目时 除了配置流水线以外 还需要配置的就是参数 因为Jenkinsfile中有一些参数诸如branch、project_name这些参数都是没有在Jenkinsfile文件中完成注入的、因此要求在配置流水线项目的同时完成此类参数的注入、且project_name这个参数属于多参数注入需要依赖于extended choice parameter plugin这个插件

相关推荐
鹏大师运维5 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰5 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
serve the people6 小时前
Elasticsearch(1) could you tell me how to use es if i am a beginner
大数据·elasticsearch·jenkins
weixin_604236676 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春7 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
AI智图坊7 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
云计算磊哥@11 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
天天进步201512 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
极客先躯12 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷
Java面试题总结13 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器