CentOS 上 Jenkins 如何集成 Git、Maven、Docker 和 Kubernetes

山间有风
山间有风
发布时间:2026-08-24 | 166人浏览过
原创

前言

在 CentOS 环境里部署 Jenkins 只是第一步,真正影响自动化效率的,是它能否稳定接入代码仓库、构建工具、容器引擎和集群环境。下面按“先准备、再集成、最后验证”的顺序,把 Git、Maven、Docker、Kubernetes 的常见接入方式拆开说明,方便你快速搭出一条能跑通的 CI/CD 流程,也能知道问题通常会卡在哪些环节。

在 CentOS 环境里部署 Jenkins 只是第一步,真正影响自动化效率的,是它能否稳定接入代码仓库、构建工具、容器引擎和集群环境。下面按“先准备、再集成、最后验证”的顺序,把 Git、Maven、Docker、Kubernetes 的常见接入方式拆开说明,方便你快速搭出一条能跑通的 CI/CD 流程,也能知道问题通常会卡在哪些环节。

集成前先完成三项基础配置

在开始接入具体工具之前,建议先把 Jenkins 本身的运行环境补齐。这样做的目的很简单:避免任务创建到一半,才发现插件没装、路径没配或工具不可用。

安装 Jenkins 并完成初始化

如果 Jenkins 还没有部署完成,需要先在 CentOS 上通过 yum 仓库添加官方 repo、导入 GPG 密钥,再安装 Jenkins、启动服务并设置开机自启。安装结束后,还要完成首次初始化配置,确保 Web 管理界面可正常访问。

Jenkins 接入 Git 与 Maven 的配置关系图,展示插件、全局工具、仓库认证与构建目标之间的对应关系。
Git 与 Maven 接入关系图把 Git 拉取与 Maven 构建放在一张关系图里,更容易看清 Jenkins。

这一步虽然不涉及具体业务工具,但它决定了后续插件安装、任务创建和 Pipeline 执行能否正常进行。

提前装好对应插件

Jenkins 的工具集成能力主要来自插件。在 Manage Jenkins > Manage Plugins 中,可以按目标场景安装对应插件,例如:

  • Git Integration
  • Maven Integration
  • Docker Pipeline
  • Kubernetes

如果后续要做源码拉取、Java 构建、镜像打包和集群部署,这几个插件基本属于常规组合。先装好插件,再建任务,配置过程会顺畅很多。

在全局工具配置里统一管理路径

进入 Manage Jenkins > Global Tool Configuration,把 JDK、Maven、Git 等工具的安装路径统一配置好。这样 Jenkins 任务在引用这些工具时,就不需要在每个 Job 或每段脚本里反复指定路径。

Jenkins 对接 Docker 与 Kubernetes 的执行链路图,展示从镜像构建到集群部署的关键节点和权限要求。
Docker 到 Kubernetes 的部这一段最容易出问题的是权限、Agent 模板和部署连接方式,用流程图比文字更直观。

这一步尤其适合多任务、多项目场景。统一管理后,迁移、升级和排错都会更直接。

Git 和 Maven 怎么接入 Jenkins

对大多数 Java 项目来说,Jenkins 最常见的前半段链路就是“从 Git 拉代码,再用 Maven 构建”。这两部分配置完成后,持续集成的基础就搭起来了。

Git:让 Jenkins 能拉代码、识别变更并自动触发

Git 是 Jenkins 接入研发流程的入口。常见配置步骤如下:

  • 在 Manage Plugins 中安装 Git Plugin。
  • 在 Global Tool Configuration 中确认 Git 可执行文件路径,通常 Jenkins 会自动识别系统中已安装的 Git。
  • 创建 Jenkins 任务时,在 Source Code Management 中选择 Git,填写仓库地址,例如 https://github.com/user/repo.git。
  • 通过 Credentials 添加认证信息,可使用用户名/密码或 SSH 密钥。

如果只是手动触发构建,到这一步基本就够了。但要真正实现自动化,还需要配置触发方式。

常见的两种方案是:

  • Poll SCM:例如 H/5 * * * *,表示每 5 分钟检查一次仓库是否有变更。
  • Webhook:在 Git 平台配置回调地址,代码推送后立即通知 Jenkins 触发任务。

其中,Webhook 更适合追求实时触发的场景;Poll SCM 则更容易上手,适合先把流程跑通。

Maven:把源码构建过程交给 Jenkins 执行

Maven 是 Java 项目中最常见的构建工具,接入 Jenkins 的方式也比较固定:

  • 在 Manage Plugins 中安装 Maven Integration Plugin。
  • 进入 Global Tool Configuration,添加 Maven 安装路径,例如 /usr/share/maven,并定义名称,比如 maven-3.8.6。
  • 创建任务时,可选择 Freestyle project 或 Maven project。
  • 在构建步骤中添加 Invoke top-level Maven targets,并填写目标命令,例如 clean install。

如果项目依赖私有仓库、镜像源或代理设置,还可以在 Manage Jenkins > Configure System 中指定 settings.xml 路径。这样做的好处是,不必把仓库策略硬编码到每个项目里,统一维护更方便。

完成这部分后,Jenkins 就能从代码仓库拉取源码,并按既定目标完成 Java 项目的编译、测试和打包。

Docker 集成的关键在构建命令和权限

当构建结果需要进一步制作为容器镜像时,Docker 就会成为 Jenkins 流水线里的下一环。相比 Git 和 Maven,Docker 集成更容易卡在系统权限和执行环境上,因此配置时要特别注意。

先让 CentOS 主机具备 Docker 能力

在 CentOS 服务器上安装 Docker 引擎,例如执行:

yum install docker

安装后启动服务,并设置开机自启,确保 Jenkins 所在主机可以直接调用 Docker 守护进程。

安装插件并确认 Docker 路径

在 Manage Plugins 中安装 Docker Pipeline 或 Docker 插件。随后进入 Global Tool Configuration,确认 Jenkins 已识别 Docker 路径,常见位置是 /usr/bin/docker。

如果路径没识别出来,后续无论是 Freestyle 的 Shell 步骤,还是 Pipeline 的 Docker API,都可能直接报错。

在 Pipeline 或 Shell 中执行镜像构建

Docker 集成完成后,Jenkins 常见的两种用法分别是:

  • 在 Pipeline 中使用 docker.build(),例如:docker.build("my-image:${env.BUILD_ID}")
  • 在 Execute shell 中直接运行命令,例如:docker build -t my-image .

前者更适合把构建逻辑纳入流水线脚本统一管理,后者则更直观,适合初期调试和简单项目。

别忽略 Jenkins 用户的 Docker 权限

Docker 配通了、命令也写对了,但任务依旧失败时,最常见的问题之一就是 Jenkins 用户没有访问 Docker 守护进程的权限。可以把 Jenkins 用户加入 docker 组:

usermod -aG docker jenkins

这一步是很多人第一次接入 Docker 时最容易漏掉的地方。只要权限不通,Jenkins 即使识别到了 Docker 命令,也无法实际完成镜像构建和推送。

Kubernetes 接入后,流水线才能走到部署阶段

如果说 Docker 解决的是“如何打包运行环境”,那么 Kubernetes 解决的就是“如何把镜像部署到集群并持续管理”。Jenkins 接入 Kubernetes 后,才能把持续集成扩展为持续交付甚至持续部署。

安装 Kubernetes 插件

在 Manage Plugins 中搜索并安装 Kubernetes 插件。这是 Jenkins 与集群通信、动态调度 Agent、执行部署动作的基础。

在 Jenkins 中配置 Kubernetes 云环境

进入 Manage Jenkins > Configure System,添加 Kubernetes 云环境,填写集群 API 地址,例如:

https://kubernetes.default.svc

认证方式可以使用 kubeconfig 文件,也可以通过证书配置。这里的关键点不在于界面填了什么,而在于 Jenkins 是否能真实连通集群 API,以及认证信息是否具备对应权限。

定义 Jenkins Agent Pod 模板

如果希望 Jenkins 在 Kubernetes 中动态拉起构建节点,可以在集群里定义 Jenkins Agent 的 Pod 模板,其中通常包括:

  • 容器镜像
  • 资源限制
  • 挂载卷
  • 连接方式,例如 Kubernetes Pod Template

这种方式的好处是构建环境可以按任务动态创建和释放,减少固定节点占用,也更适合容器化基础设施。

用 Pipeline 脚本触发部署

完成连接后,可以在 Pipeline 中使用 kubernetesDeploy 执行部署,例如:

kubernetesDeploy(configs: 'k8s-deployment.yaml', kubeConfig: [path: ''])

这里的核心是把构建结果与部署清单关联起来。前面的 Git、Maven、Docker 负责产生可发布镜像,而 Kubernetes 负责把这份结果真正投放到目标环境中。

集成完成后,怎么验证和优化

工具都接入后,并不意味着流程已经稳定可用。最后还需要通过一次完整任务来验证链路,并根据日志和资源情况做针对性优化。

先跑一条最小可用链路

建议先创建一个简单任务,按下面的顺序串起来:

  • Git 拉取代码
  • Maven 构建
  • Docker 镜像构建

这条链路不一定一开始就接入 Kubernetes,但至少能验证 Jenkins 是否已经具备从源码到镜像的基础自动化能力。

通过 Console Output 定位问题

任务失败后,最直接的排查入口就是 Jenkins 的 Console Output。常见问题通常集中在三类:

  • 权限错误,例如 Docker 权限不足
  • 路径错误,例如 Git、Maven 未正确识别
  • 配置错误,例如认证信息、插件依赖或脚本参数不完整

相比反复修改界面配置,先读清日志往往更有效,能更快判断问题是在系统层、Jenkins 层,还是具体工具层。

根据项目规模做性能调整

当流程跑通后,可以继续考虑性能优化,例如:

  • 插件版本尽量使用最新稳定版
  • 为 Docker 构建分配独立节点资源
  • 根据项目规模增加 Jenkins 节点能力

对于体量较小的项目,这部分不必一次做满;但在构建频率上升、任务并发增多之后,节点资源和插件稳定性会直接影响交付效率。

整体来看,CentOS 上的 Jenkins 集成并不难,难点主要集中在三件事:插件是否匹配、工具路径是否统一、系统权限是否打通。只要这几处配置清楚,Jenkins 就可以比较顺畅地把 Git、Maven、Docker、Kubernetes 串成一条从代码提交到容器部署的自动化链路。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表