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这个插件

相关推荐
极小狐16 分钟前
极狐GitLab Duo 功能更新:扩展 MCP 工具集、支持 MR 事件触发
运维·gitlab·agent·mr·极狐gitlab·mcp·极狐gitlab duo
隔窗听雨眠17 分钟前
无辅助损失函数的负载均衡:DeepSeek MoE架构的核心突破
运维·架构·负载均衡
guo_wen_qiang3 小时前
mac中docker desktop服务端开启远程访问
运维·服务器·macos·docker
小五传输3 小时前
消防总队信创改造实践:国产文件传输服务器解决文件传输难题
大数据·运维·安全
云飞云共享云桌面3 小时前
医疗器械设备研发:多人同时操作 SolidWorks,怎样依靠单台服务器替代多工作站
运维·服务器·网络·数据库·制造
T型码农要学习3 小时前
开源项目5|FileBrowser:免费在线文件管理器!随时随地管控服务器文件
运维·服务器·人工智能·开源
朱 欢 庆4 小时前
云服务器附件备份到本机内网服务器
运维·服务器·前端·经验分享
智恒百亿4 小时前
8 卡 RTX 5090 服务器深度实测:256GB 显存能否支撑 70B 模型微调?选型参考
大数据·运维·服务器·人工智能
志栋智能9 小时前
超自动化运维如何支持合规审计?
运维·自动化
小诗懂技术9 小时前
【网络通信UDP】基础 进程间不同主机的通信
运维·服务器·网络