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

相关推荐
古城小栈1 小时前
Jenkins 自动构建 搞起来
java·servlet·jenkins
成为你的宁宁1 小时前
【Jenkins+GitLab 自动化构建部署实战教程:环境介绍、服务部署、密钥配置、项目推送与自动编译打包全流程详解】
自动化·gitlab·jenkins
我是苏苏1 小时前
开发工具:notepad++的下载和基本操作
运维·nginx·ai·.net·.netcore
江池俊1 小时前
openEuler系统管理实战:构建全方位监控与高效运维堡垒
运维
江池俊1 小时前
openEuler开发与自动化运维实战:从系统部署到CI/CD流水线构建
运维·ci/cd·自动化
渣渣盟1 小时前
Console登录安全配置指南
运维·服务器·网络
掘根1 小时前
【消息队列项目】Muduo库的介绍
运维·服务器
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 小时前
docker打tar包命令
运维·docker·容器
gs801401 小时前
华鲲振宇 AT3500 G3 深度解析 —— 面向大模型推理的国产异构算力服务器
运维·服务器