CI/CD——使用Jenkins实现自动化部署与持续集成之jenkins插件与凭据配置

CI/CD------使用Jenkins实现自动化部署与持续集成https://blog.csdn.net/xiaochenXIHUA/article/details/160737557

一、Jenkins的基础配置

1.1、Jenkins必须安装的插件

插件类型 插件名称 插件用途 插件核心场景
可视化与流水线核心 Blue Ocean Jenkins 现代化 UI,专为 Pipeline 设计,可视化 CI/CD 流程,支持拖拽编辑流水线 替代传统视图,直观展示阶段 / 步骤状态、失败定位,支持分支与 PR 可视化
可视化与流水线核心 Pipeline(workflow-aggregator) Jenkins 流水线核心,支持代码化定义 CI/CD(Jenkinsfile),含声明式 / 脚本式语法 所有自动化流程,如拉代码→构建→测试→打包→部署,支持共享库扩展
SSH远程操作(发布+代理) Publish Over SSH 通过 SSH/SCP远程传输文件 + 执行命令,支持密码 / 密钥认证,构建前后均可执行。 传统部署(如将 Jar / 静态文件传到远程服务器并启动),支持失败重试、伪终端。
SSH远程操作(发布+代理) SSH Agent Plugin 在构建中通过ssh-agent提供 SSH 密钥,免密执行远程命令 / 拉取代码 ,Pipeline 用sshagent步骤。 流水线中免密 SSH(如 Git SSH 拉取、远程 Docker 操作),无需手动管理密钥文件。
SSH远程操作(发布+代理) SSH Plugin(SSH) 基础 SSH 连接与命令执行,轻量版 Publish Over SSH,适合简单远程操作。 Freestyle 项目快速执行远程命令,配置简单、依赖少。
容器与云原生 Docker Jenkins 与 Docker 守护进程交互,构建 / 推送 / 运行容器镜像,管理本地 / 远程 Docker 主机。 容器化构建(如打包应用为镜像)、镜像仓库推送、容器启动 / 停止。
容器与云原生 Docker Pipeline Pipeline 专用 Docker 集成,在 Jenkinsfile 中直接定义容器化步骤,支持镜像构建、推送、多容器并行。 流水线内 Docker 全流程(如构建镜像→推送到 Harbor→部署),语法简洁、原生支持。
容器与云原生 Kubernetes Plugin 动态分配 K8s Pod 作为 Jenkins Agent,按需创建 / 销毁构建 Pod,弹性扩缩容,支持 Pod 模板定义多容器 云原生 CI/CD,大规模构建集群,隔离构建环境,支持微服务并行构建 / 测试

1.2、Jenkins必备的插件组合

插件组合 说明
传统部署(无容器) * 必备:Pipeline + Blue Ocean + Publish Over SSH + SSH Agent * 流程:Blue Ocean 编辑 Pipeline → 拉代码构建 → SSH Agent 免密 → Publish Over SSH 传包 + 远程启动
容器化部署(Docker) * 必备:Pipeline + Blue Ocean + Docker + Docker Pipeline + SSH Agent * 流程:Pipeline 内 Docker 构建镜像 → 推送仓库 → SSH 免密远程部署容器
云原生(K8s) * 必备:Pipeline + Blue Ocean + Kubernetes + Docker + Docker Pipeline * 流程:K8s 动态 Agent → 容器化构建 → 镜像推送 → K8s 部署

1.3、Jenkins安装插件的注意事项

安装路径:Jenkins → Manage Jenkins → Manage Plugins → Available Plugins,搜索插件名后勾选需要安装的插件安装并重启。

依赖关系

Docker Pipeline 依赖 Docker 插件

SSH Agent 依赖 SSH Credentials 插件

Kubernetes 需集群权限与 kubeconfig 配置

安全建议:密钥凭证加密存储,最小权限配置,避免暴露敏感信息。

1.4、Jenkins的全局工具配置

登录到jenkins的web后台,点击右上角的【齿轮图标】(Manage Jenkins)-->【System Configuration下的"全局工具配置"】界面对JDK、git、Maven进行配置。

jenkins的全局配置内容 配置内容
JDK 别名(name):【jdk21】 JAVA_HOME:【/data/openjdk2109010】
git Name:【git】 Path to Git executable:【/usr/bin/git】
Maven Name:【maven3.9.15】 MAVEN_HOME:【/usr/local/maven】

1.5、凭据配置

登录到jenkins的web后台,点击右上角的【齿轮图标】(Manage Jenkins)-->【Security下的"Credentials"】-->【Add Credentials】即可添加新的凭据;常用【Username with password】与【SSH Username with private key】,如下图所示:

1.5.1、jenkins生成并添加gitlab的SSH密钥凭据

首先在jenkins所在服务器生成自己的密钥对,然后将生成的公钥(结尾是.pub)的文件内容在gitlab中配置;其次将生成的私钥文件内容(注意:文件内容必须合并为一个字符串,不能是回车的多个字符串)到凭据中,如下图所示:

bash 复制代码
#在jenkins所在服务器上生成密钥对
#1-在指定路径新生成指定名称的密钥对
ssh-keygen -t ed25519
/root/.ssh/id_ed25519_gitlab
#由于没有使用默认的文件名称,因此需要配置SSH
vi ~/.ssh/config
#【~/.ssh/config】文件的内容
Host gitlab.ck.com
  HostName gitlab.ck.com
  User git
  Port 22222
  IdentityFile ~/.ssh/id_ed25519_gitlab
  IdentitiesOnly yes
 
#2-查看密钥对的公钥信息
cat ~root/.ssh/id_ed25519_gitlab.pub


#3-在jenkins的hosts文件末尾添加gitlab服务器的域名解析
cat >>/etc/hosts <<EOF
192.168.1.39 gitlab.ck.com
EOF


#4-查看密钥对的私钥信息
cat ~root/.ssh/id_ed25519_gitlab

在jenkins上配置登录gitlab的凭证,如下图所示:

1.5.2、jenkins配置用户密码凭据

二、gitlab与jenkins集成实现自动化部署流程

2.1、基础架构

jenkins自动从gitlab的指定仓库中拉取代码,然后jenkins将拉取到的代码进行编译、打包等工作,最后将打包好的内容发送到对应的应用服务器上部署,如下图所示:

2.2、gitlab与jenkins部署java maven项目流程

jenkins调用git从远程仓库(如:gitlab)克隆代码到本地仓库;然后jenkins使用本机的maven编译代码打包放到JENKINS_HOME中;接着将war包通过SSH发生到远程主机的指定目录中;最后拷贝远程主机指定目录中的war包部署到tomcat中进行发布,如下图所示:

2.3、gitlab与jenkins部署docker容器项目流程

开发电脑将项目代码提交到远程仓库中;jenkins调用git从远程仓库中拉取到项目代码,然后将项目代码进行编译、构建docker镜像,接着将docker镜像推送到镜像仓库中;最后jenkins部署(先对测试环境进行拉取项目的docker镜像部署测试);稳定后再对生产环境部署。

2.4、gitlab与jenkins部署k8s流程

开发电脑将项目代码提交到远程仓库中;jenkins监控远程仓库的项目代码库,一旦远程仓库的项目代码有变化,就会触发构建项目操作(构建出项目的docker镜像),构建完成后将项目docker镜像推送到镜像仓库;与ks8有两种交互方式:

《1》最简单粗暴的方法:jenkins直接通过ssh连接到k8s的某个节点,登录到节点后使用【kubectl】操作节点部署docker镜像。

《2》jenkins直接通过k8s提供的API接口,将需要操作的任务提交到这个接口中,让k8s内部去执行【更推荐,但是需要在jenkins上配置很多插件内容,较为复杂】。

详细的操作流程如下图所示:

spring Cloud与K8S
**Spring Cloud:**基于Java的微服务框架,用来管理微服务,提供了服务发现、负载均衡、配置管理等功能。
Kubernetes: 是一个容器编排平台,也可以用来管理微服务,提供了服务发现、负载均衡、自动修复、滚动升级等功能。
两种部分功能重合,Spring Cloud侧重于开发,Kubernetes侧重与运维。
不建议两者混用,推荐使用Spring boot+Kubernetes,使用Spring boot构建微服务,然后通过k8s管理微服务。
相关推荐
摇滚侠1 小时前
DSL 学习 ElasticSearch 主要就是学习 DSL 查询语言
学习·elasticsearch·jenkins
庚昀◟1 天前
腾讯云 CVM + Docker + Jenkins + GitLab CI/CD 全流程指南(python、flask实现简单计算器)
python·ci/cd·docker·flask·jenkins
牛奶咖啡131 天前
CI/CD——使用Jenkins实现自动化部署与持续集成
ci/cd·jenkins·jenkins是什么?有啥用·jenkins有哪些适用场景·jenkins的优缺点·jenkins的安装部署·jenkins安装必备环境
测试那点事儿2 天前
第10章 零基础接口自动化到 Jenkins 持续集成【定时监控与邮件告警完整落地】
ci/cd·自动化·jenkins
a***72892 天前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins
摇滚侠3 天前
黑马 Elasticsearch 全套教程,黑马旅游网案例
大数据·elasticsearch·jenkins
行者-全栈开发3 天前
Linux 核弹级高危漏洞 CVE-2026-31431 完整修复指南
linux·运维·服务器·ci/cd·devops·cve·核弹级高危漏洞
身如柳絮随风扬3 天前
使用 Docker 部署 Jenkins 并实现自动化部署 —— 从零到一的 CI/CD 实践指南
docker·自动化·jenkins
醉颜凉3 天前
Elasticsearch高阶聚合实战:Pipeline Aggregation 用法详解与典型场景全攻略
大数据·elasticsearch·jenkins