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

相关推荐
聆风吟º2 小时前
CANN开源项目深度实践:基于amct-toolkit实现自动化模型量化与精度保障策略
运维·开源·自动化·cann
较劲男子汉6 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
风流倜傥唐伯虎6 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
Doro再努力6 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene6 小时前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器
忧郁的橙子.6 小时前
02-本地部署Ollama、Python
linux·运维·服务器
醇氧6 小时前
【linux】查看发行版信息
linux·运维·服务器
No8g攻城狮7 小时前
【Linux】Windows11 安装 WSL2 并运行 Ubuntu 22.04 详细操作步骤
linux·运维·ubuntu
酷酷的崽7987 小时前
CANN 生态可维护性与可观测性:构建生产级边缘 AI 系统的运维体系
运维·人工智能
做人不要太理性7 小时前
CANN Runtime 运行时组件深度解析:任务调度机制、存储管理策略与维测体系构建逻辑
android·运维·魔珐星云