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

相关推荐
loong_XL16 分钟前
elastic kibana可视化数据统计案例
运维·ai·智能体
惜.己24 分钟前
安装windows版本docker(配置镜像源+拉取运行docker)
运维·docker·容器
5G全域通25 分钟前
面向5G复杂性的下一代运维技术体系:架构、工具与实践
大数据·运维·人工智能·5g·架构
你好helloworld30 分钟前
ubuntu安装protobuf
linux·运维·ubuntu
Atri厨1 小时前
awk入门练习题
linux·运维·服务器
极客小云1 小时前
【2026年Docker国内镜像源最新可用清单与配置指南】
运维·docker·容器
乾元2 小时前
生成对抗样本在网络安全中的工程化解读——AI 误报、误判与对抗的真实边界
运维·网络·人工智能·python·安全·web安全
zeijiershuai2 小时前
Linux、Linux常用命令、Linux软件安装、Linux项目部署
linux·运维·服务器
小宇的天下2 小时前
Calibre nmDRC 高级边缘处理与输出控制(17)
linux·运维·lvs
java_logo2 小时前
Caddy Docker 容器化部署指南
运维·docker·容器·caddy部署·caddy部署文档·caddy部署教程·docker部署caddy