——Jenkins安装与基础配置——CICD核心引擎)
云原生 DevOps 工具链从入门到实战第二期——Jenkins安装与基础配置——CI/CD核心引擎更多云原生DevOps技能学习请戳这里云原生 DevOps 工具链从入门到实战我的主页AOwhisky这里有更多运维系统性知识整理和其他有趣内容欢迎与我一起探讨学习~ 引言给 DevOps 装上“发动机”第一期我们完成了 GitLab 的部署代码有了“家”。但代码仓库只是起点——开发者把代码推上去了然后呢谁来负责自动编译、自动测试、自动打包谁来把构建好的程序部署到服务器上这些重复性的“体力活”如果全部靠人工完成效率低、易出错、难追溯。我们需要一个自动化引擎——它能在代码提交的瞬间自动拉起构建流程像生产线一样把“代码原材料”加工成“可运行的软件”。这就是Jenkins的使命。 白话理解如果说 GitLab 是“原料仓库”那么 Jenkins 就是“自动化工厂”——你把代码提交到仓库Jenkins 自动完成编译、测试、打包、部署全程无需人工干预。Jenkins 是目前 DevOps 工具链中使用最广泛的 CI/CD 自动化服务器。本期我们将完成 Jenkins 的安装、配置和初步验证让这个“工厂”先运转起来。— Compiled and Authored by Whisky — July 26 th, 2026 本期目录Jenkins 概述环境准备与前置依赖Docker 部署 JenkinsJenkins 初始化配置插件管理全局工具配置JDK / Maven构建任务入门总结与知识点一览表正文一、Jenkins 概述1.1 什么是 JenkinsJenkins 是一个开源的、基于 Java 的持续集成和持续交付CI/CD自动化服务器。它被广泛应用于软件开发流程中用于自动化构建、测试和部署代码从而提高开发效率、软件质量和发布速度。 白话理解Jenkins 就像一个“自动化的流水线工人”——你告诉它“当代码仓库有变化时执行一系列任务编译、测试、打包、部署”它就会不折不扣地完成任务还会把结果告诉你。1.2 Jenkins 的核心能力能力说明典型场景持续集成代码提交后自动触发构建和测试每次 Push 后自动运行单元测试持续交付自动化部署到测试/预发布环境每日构建自动部署到测试环境持续部署通过质量门禁后自动发布到生产通过全部测试后自动上线插件扩展1800 插件支持各种工具集成Git/Maven/Docker/K8s/SonarQube分布式构建多 Agent 并行执行任务加速大规模构建定时任务按计划执行构建或任务每日凌晨自动构建1.3 Jenkins 的核心组件┌─────────────────────────────────────────────────────────┐ │ Jenkins 架构 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ Jenkins │────▶│ Web UI │ 用户交互界面 │ │ │ Master │ │ (8080) │ │ │ │ (主节点) │ └─────────────┘ │ │ │ │ │ │ │ 调度/管理 │ ┌─────────────┐ │ │ │ 分配任务 │────▶│ 插件系统 │ 1800 插件 │ │ └─────────────┘ └─────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ │ │ │ Agent │ 执行构建任务的计算节点 │ │ │ (执行器) │ 本期不涉及后续扩展 │ │ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘组件说明本期状态Master主节点提供 Web UI管理配置调度构建作业✅ 本期部署Agent执行器实际执行构建任务的计算资源后续章节Plugin插件扩展 Jenkins 功能的模块✅ 本期配置Job/Pipeline定义了构建任务的具体内容和步骤✅ 本期入门二、环境准备与前置依赖2.1 服务器环境在开始部署 Jenkins 之前需要确保服务器满足以下条件检查项要求验证命令操作系统CentOS 7.x / Ubuntu 20.04cat /etc/redhat-release内存建议 ≥ 4GBfree -h磁盘建议 ≥ 20GBdf -hDocker已安装并运行docker --version网络可访问外网拉取镜像ping google.com⚠️ 注意Jenkins 是 Java 应用对内存有一定要求。生产环境建议至少 4GB 内存测试环境 2GB 勉强可用。2.2 关闭防火墙和 SELinux# 关闭防火墙systemctl disable firewalld.service--now# 临时关闭 SELinuxsetenforce0# 永久关闭 SELinuxsed-is/SELINUXenforcing/SELINUXdisabled/g/etc/selinux/config2.3 Maven 部署Jenkins 构建 Java 项目需要 Maven我们先在宿主机上准备好 Maven。# 解压 JDK 和 Maven已有压缩包tarzxvf jdk-8u171-linux-x64.tar.gz-C/usr/local/tarzxvf apache-maven-3.6.2-bin.tar.gz-C/usr/local/# 重命名cd/usr/local/mvapache-maven-3.6.2/ mavenmvjdk1.8.0_171/ jdk配置 Maven 阿里云镜像仓库vim/usr/local/maven/conf/settings.xml找到mirrors标签约 159 行在注释符号!-- --外面添加mirroridaliyunmaven/idmirrorOfcentral/mirrorOfname阿里云公共仓库/nameurlhttps://maven.aliyun.com/repository/public/url/mirror配置 Maven 支持 JDK 1.8找到profiles标签约 253 行添加profileidjdk8/idactivationactiveByDefaulttrue/activeByDefaultjdk1.8/jdk/activationpropertiesmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.targetmaven.compiler.compilerversion1.8/maven.compiler.compilerversion/properties/profile找到activeProfiles标签约 275 行添加activeProfilesactiveProfilejdk8/activeProfile/activeProfiles2.4 Docker 部署Jenkins 本身以容器方式运行但需要宿主机 Docker 环境支持容器内构建镜像。安装 Docker# 卸载旧版本sudoyum removedockerdocker-common docker-selinux docker-engine# 安装依赖包sudoyuminstall-yyum-utils device-mapper-persistent-data lvm2# 设置华为云镜像源wget-O/etc/yum.repos.d/docker-ce.repo https://mirrors.huaweicloud.com/docker-ce/linux/centos/docker-ce.reposudosed-isdownload.docker.commirrors.huaweicloud.com/docker-ce/etc/yum.repos.d/docker-ce.repo# 安装 Dockersudoyum makecache fastsudoyuminstalldocker-ce-y# 设置开机自启systemctlenabledocker--now配置镜像加速tee/etc/docker/daemon.json-EOF { registry-mirrors: [ https://mirror.ccs.tencentyun.com, https://docker.m.daocloud.io, https://dockerproxy.com, https://docker.mirrors.ustc.edu.cn ] } EOF# 重启 Dockersystemctl daemon-reload systemctl restartdocker2.5 docker-compose 工具安装# 下载 docker-compose替换为实际版本curl-Lhttps://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname-s)-$(uname-m)-o/usr/local/bin/docker-compose# 添加执行权限chmodx /usr/local/bin/docker-compose# 验证docker-compose--version三、Docker 部署 Jenkins3.1 拉取 Jenkins 镜像我们选择一个稳定且适配 JDK 8 的版本dockerpull jenkins/jenkins:2.346.3-lts-jdk8 版本选择建议2.346.3-lts-jdk8是长期支持版LTS基于 JDK 8与我们的 Java 项目兼容性好。如果需要 JDK 11/17可选用更新的版本。3.2 创建资源目录# 创建 Jenkins 数据目录mkdir-p/usr/local/docker/jenkins_docker# 进入目录cd/usr/local/docker/jenkins_docker3.3 编写 docker-compose.ymlversion:3.1services:jenkins:image:jenkins/jenkins:2.346.3-lts-jdk8container_name:jenkinsports:-8080:8080# Jenkins Web 端口-50000:50000# Agent 通信端口volumes:-./data/:/var/jenkins_home/# 持久化 Jenkins 数据3.4 启动 Jenkins# 启动docker-composeup-d# 查看日志获取初始密码dockerlogs-fjenkins预期输出2025-06-26 07:52:55.5640000 [id27] INFO jenkins.install.SetupWizard#init: ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # ← 这是初始密码32位字符串 ************************************************************* ************************************************************* *************************************************************查看容器状态dockerps-a|grepjenkins预期输出CONTAINER ID IMAGE STATUS PORTS 0eb81fc79a4a jenkins/jenkins:2.346.3-lts-jdk8 Up 2 minutes 0.0.0.0:8080-8080/tcp3.5 解决常见启动问题问题 1权限被拒绝Permission deniedtouch: cannot touch /var/jenkins_home/copy_reference_file.log: Permission denied解决方法给 data 目录赋予写权限chmod777/usr/local/docker/jenkins_docker/data/docker-composerestart问题 2其他主机无法访问 Jenkins原因服务器未开启 IP 转发解决方法vim/etc/sysctl.conf# 在末尾添加net.ipv4.ip_forward1sysctl-p四、Jenkins 初始化配置4.1 访问 Jenkins Web 页面在浏览器中输入http://服务器IP:8080┌──────────────────────────────────────────────┐ │ Jenkins │ │ │ │ Unlock Jenkins │ │ │ │ To ensure Jenkins is securely set up by │ │ the administrator, a password has been │ │ generated and written to the log. │ │ │ │ ┌─────────────────────────────────────┐ │ │ │ Administrator password │ │ │ │ [________________________________] │ │ │ └─────────────────────────────────────┘ │ │ │ │ [ Continue ] │ └──────────────────────────────────────────────┘4.2 解锁 Jenkins将docker logs -f jenkins中显示的初始密码32位字符串粘贴到输入框中点击Continue。4.3 自定义 Jenkins 插件安装Jenkins 提供两种插件安装方式方式说明推荐场景安装推荐插件自动安装常用插件集初学者、快速体验选择插件安装手动挑选需要的插件生产环境、定制化需求本期我们选择“选择插件安装”只安装后续实战需要的核心插件插件名称用途Git从 Git 仓库拉取代码Git Parameter支持在构建时选择 Git 分支/TagPublish Over SSH将构建产物通过 SSH 发送到目标服务器SonarQube Scanner代码质量扫描后续章节使用Blue Ocean现代化的 Pipeline 可视化界面跳过插件安装也可以——后续在“系统管理 → 插件管理”中随时安装。4.4 创建管理员用户插件安装完成后进入管理员用户创建页面┌──────────────────────────────────────────────┐ │ Create First Admin User │ │ │ │ Username: [________________] │ │ Password: [________________] │ │ Full name: [________________] │ │ Email: [________________] │ │ │ │ [ Save and Continue ] │ └──────────────────────────────────────────────┘填写建议字段建议值说明Usernameadmin简洁易记Password设置强密码生产环境建议 8 位以上含特殊字符Full nameAdministrator显示名称Email真实邮箱用于接收通知4.5 实例配置Jenkins URL 保持默认http://IP:8080点击Save and Finish→Start using Jenkins。✅ Jenkins is ready! 生产环境建议如果 Jenkins 配置了域名如https://jenkins.company.com此处应填写域名地址避免构建时 URL 指向错误。五、插件管理5.1 查看已安装插件进入系统管理→插件管理→已安装可以看到当前已安装的插件列表。5.2 安装新插件方式一通过 Web 界面安装进入系统管理→插件管理→可选插件搜索需要的插件名称勾选插件后点击Install without restart安装后不重启方式二上传插件离线安装当 Jenkins 服务器无法访问外网时可以通过上传.hpi文件安装进入系统管理→插件管理→高级→上传插件选择.hpi文件 → 点击上传5.3 更换国内镜像源加速插件下载如果插件下载速度慢可以更换为国内镜像源# 进入 Jenkins 数据目录cd/usr/local/docker/jenkins_docker/data/# 备份原配置mvhudson.model.UpdateCenter.xml hudson.model.UpdateCenter.xml.bk# 复制一份用于修改cp-phudson.model.UpdateCenter.xml.bk hudson.model.UpdateCenter.xml# 修改为清华源vimhudson.model.UpdateCenter.xml将内容替换为?xml version1.1 encodingUTF-8?sitessiteiddefault/idurlhttps://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json/url/site/sites重启 Jenkins 使配置生效docker-composerestart六、全局工具配置Jenkins 需要知道 JDK 和 Maven 的位置才能执行构建任务。6.1 将 JDK 和 Maven 复制到 Jenkins 工作目录# 复制 JDK 和 Maven 到 Jenkins 数据目录cp-r/usr/local/jdk /usr/local/docker/jenkins_docker/data/cp-r/usr/local/maven /usr/local/docker/jenkins_docker/data/ 路径说明/var/jenkins_home/是 Jenkins 容器内的工作目录对应宿主机的/usr/local/docker/jenkins_docker/data/。6.2 配置 JDK进入系统管理→全局工具配置┌─────────────────────────────────────────────────────────────────┐ │ 全局工具配置 │ ├─────────────────────────────────────────────────────────────────┤ │ JDK │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ JDK installations │ │ │ │ [] Add JDK │ │ │ │ │ │ │ │ Name: [jdk8 ] │ │ │ │ JAVA_HOME: [/var/jenkins_home/jdk ] │ │ │ │ ☑ Install automatically 取消勾选 │ │ │ └─────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘关键配置字段值说明Namejdk8自定义名称后续构建时引用JAVA_HOME/var/jenkins_home/jdkJenkins 容器内的 JDK 路径Install automatically❌ 取消勾选我们手动配置路径6.3 配置 Maven在同一个页面向下滚动到 Maven 部分┌─────────────────────────────────────────────────────────────────┐ │ Maven │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ Maven installations │ │ │ │ [] Add Maven │ │ │ │ │ │ │ │ Name: [maven3.6 ] │ │ │ │ MAVEN_HOME: [/var/jenkins_home/maven] │ │ │ │ ☑ Install automatically 取消勾选 │ │ │ └─────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘关键配置字段值说明Namemaven3.6自定义名称MAVEN_HOME/var/jenkins_home/mavenJenkins 容器内的 Maven 路径Install automatically❌ 取消勾选手动配置6.4 保存配置点击页面底部的应用→保存。七、配置 SSH 目标服务器为了将构建产物如 JAR 包发送到目标服务器需要配置 SSH 连接。7.1 安装 Publish Over SSH 插件如果尚未安装进入系统管理→插件管理→可选插件搜索Publish Over SSH并安装。7.2 配置 SSH 服务器进入系统管理→系统配置找到Publish over SSH部分┌─────────────────────────────────────────────────────────────────┐ │ Publish over SSH │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ SSH Servers │ │ │ │ [] Add │ │ │ │ │ │ │ │ Name: [test ] │ │ │ │ Hostname: [192.168.100.155 ] │ │ │ │ Username: [root ] │ │ │ │ Remote Directory:[/usr/local/test ] │ │ │ │ Password / Key: [________________] │ │ │ │ │ │ │ │ [ Test Configuration ] │ │ │ └─────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘关键配置字段值说明Nametest配置名称后续构建时选择Hostname192.168.100.155目标服务器 IPUsernameroot目标服务器登录用户名Remote Directory/usr/local/test文件发送到的远程目录Password目标服务器的 root 密码与 Hostname 对应的密码⚠️ 注意如果目标服务器没有/usr/local/test目录需要先手动创建# 在目标服务器上执行mkdir-p/usr/local/test点击Test Configuration如果显示Success说明 SSH 连接配置成功。7.3 保存配置点击页面底部的应用→保存。八、构建任务入门为了验证 Jenkins 配置是否正确我们创建一个简单的构建任务。8.1 创建任务点击 Jenkins 首页的新建任务New Item输入任务名称mytest选择构建一个自由风格的软件项目Freestyle project点击OK8.2 配置源码管理┌─────────────────────────────────────────────────────────────────┐ │ 源码管理 │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ ● Git │ │ │ │ Repository URL: http://192.168.100.153:82/chen_group/web_demo.git │ │ │ │ Credentials: [chen / ****] │ │ │ │ Branches to build: [*/master] │ │ │ └─────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘步骤说明选择Git在Repository URL中填写 GitLab 项目地址点击Credentials右侧的Add添加 GitLab 认证凭据填写 GitLab 用户名和密码确认凭据添加成功后选择该凭据Branch保持*/master或*/main8.3 配置构建步骤点击添加构建步骤→调用顶层 Maven 目标┌─────────────────────────────────────────────────────────────────┐ │ 构建 │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ Maven Version: [maven3.6 ] │ │ │ │ Goals: [clean package -DskipTests] │ │ │ └─────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘参数含义clean清除之前构建生成的 target 目录package编译并打包成 JAR/WAR 文件-DskipTests跳过单元测试执行加快构建速度8.4 第一次构建点击保存→立即构建。查看构建日志点击构建记录如#1→Console Output可以看到构建过程的完整日志。成功标志[INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.296 s [INFO] Finished at: 2025-06-26T06:09:33Z [INFO] ------------------------------------------------------------------------8.5 验证构建产物进入 Jenkins 容器查看生成的 JAR 包# 进入容器dockerexec-itjenkinsbash# 进入工作空间cd/var/jenkins_home/workspace/mytest/target/# 查看 JAR 包ls-la*.jar预期输出-rw-r--r-- 1 jenkins jenkins 15M Jun 26 06:09 demo-0.0.1-SNAPSHOT.jar 总结与知识点一览表本期核心知识点类别知识点核心内容Jenkins 概述CI/CD 自动化服务器持续集成、持续交付、插件扩展部署方式Docker docker-compose容器化部署数据持久化初始化配置解锁密码、插件安装、管理员创建首次启动的关键步骤插件管理安装 Git / Git Parameter / Publish Over SSH核心插件安装全局工具JDK Maven 配置构建 Java 项目的基础SSH 配置Publish Over SSH构建产物远程发送构建任务Freestyle 项目源码拉取 Maven 构建常用 Jenkins 命令速查操作命令查看初始密码docker logs -f jenkins进入容器docker exec -it jenkins bash重启 Jenkinsdocker-compose restart查看日志docker-compose logs -f jenkins停止服务docker-compose down启动服务docker-compose up -d常见错误排查指南问题现象可能原因解决方法Permission denied启动失败data 目录权限不足chmod 777 data/插件下载慢连接国外源更换清华镜像源git clone失败403未配置认证凭据添加 GitLab 用户名/密码mvn: command not foundMaven 未配置检查全局工具配置中的 MAVEN_HOME构建时 JDK 找不到JAVA_HOME 配置错误检查全局工具配置中的路径Test Configuration 失败SSH 连接信息错误检查 IP/用户名/密码/端口学习/生产最佳实践数据持久化使用volumes挂载data/目录保证 Jenkins 配置在容器重启后不丢失。定期备份备份/usr/local/docker/jenkins_docker/data/目录包含所有任务配置和插件。使用 LTS 版本生产环境应使用长期支持版LTS而非每周发布的测试版。资源规划Jenkins 构建消耗 CPU 和内存确保服务器有足够的资源尤其是有多个并发构建时。安全配置创建管理员用户后立即禁用初始密码登录建议配置 HTTPS 访问。 下期预告本期我们完成了 Jenkins 的安装与基础配置——从 Docker 部署、初始化设置、插件安装、全局工具配置到 SSH 目标服务器配置和第一个构建任务。Jenkins 这个“自动化工厂”已经建好了但目前它还是“空转”状态——虽然能构建但还没有和代码仓库、开发环境、目标服务器形成完整的流水线。下一期第三期我们将进入开发环境搭建与 GitLab-Jenkins 集成——在 Windows 上配置完整的 Java 开发环境JDK Maven IDEA Git将本地代码推送到 GitLab并在 Jenkins 中完成从代码拉取到构建的自动化流程实现“代码提交 → 自动构建 → 产物输出”的初步闭环。敬请期待本期Jenkins 安装与基础配置到此结束。如果在操作过程中遇到任何问题欢迎在评论区留言讨论— Compiled and Authored by Whisky — July 26 th, 2026