尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Rocky Linux 8.5部署Jenkins CI/CD全流程指南
1. 项目概述在当今DevOps实践中持续集成与持续交付(CI/CD)已成为软件开发的标准配置。作为最流行的开源自动化服务器Jenkins凭借其强大的插件生态和灵活性在企业级CI/CD流水线中占据主导地位。本文将基于Rocky Linux 8.5这一企业级Linux发行版详细讲解Jenkins的部署、配置与优化全过程特别关注跨平台构建和容器化支持。Rocky Linux作为CentOS的替代品以其稳定性和长期支持(LTS)特性受到企业用户青睐。选择8.5版本是因为它提供了完善的软件包支持同时保持较高的稳定性。我们将从基础环境配置开始逐步构建一个支持多语言项目、跨平台构建和容器化部署的完整CI/CD流水线。2. 环境准备与基础配置2.1 系统初始化设置在开始安装Jenkins前我们需要对Rocky Linux 8.5进行一些基础配置# 更新系统并安装基础工具 sudo dnf update -y sudo dnf install -y vim wget curl git net-tools epel-release # 配置防火墙(如果启用) sudo firewall-cmd --permanent --add-port8080/tcp sudo firewall-cmd --reload # 设置时区(以上海为例) sudo timedatectl set-timezone Asia/Shanghai # 禁用SELinux(可选生产环境建议保持开启并配置策略) sudo setenforce 0 sudo sed -i s/^SELINUXenforcing/SELINUXpermissive/ /etc/selinux/config注意生产环境中不建议完全禁用SELinux可以通过audit2allow工具生成自定义策略模块来允许Jenkins的必要操作。2.2 Java环境安装Jenkins需要Java运行时环境推荐使用OpenJDK 11sudo dnf install -y java-11-openjdk java-11-openjdk-devel # 验证安装 java -version javac -version如果系统需要同时维护多个Java版本可以使用alternatives工具进行管理sudo alternatives --config java sudo alternatives --config javac3. Jenkins安装与初始配置3.1 安装JenkinsRocky Linux 8.5的默认仓库不包含Jenkins我们需要添加官方仓库sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key sudo dnf install -y jenkins安装完成后启动服务并设置开机自启sudo systemctl enable jenkins sudo systemctl start jenkins sudo systemctl status jenkins3.2 初始访问与插件配置首次访问Jenkins需要解锁管理员账户sudo cat /var/lib/jenkins/secrets/initialAdminPassword在浏览器访问http://服务器IP:8080输入密码后进入插件安装界面。建议选择安装推荐的插件这包括最常用的Git、Pipeline和Docker插件。实操心得国内服务器可能会遇到插件下载慢的问题可以通过以下方法解决修改/var/lib/jenkins/hudson.model.UpdateCenter.xml中的更新中心URL为国内镜像使用代理服务器设置手动下载插件并离线安装3.3 基础安全配置完成初始设置后应立即配置安全选项进入Manage Jenkins Configure Global Security启用Enable security选择适合的认证方式推荐Matrix-based security配置适当的权限矩阵设置CSRF保护4. 流水线核心配置与优化4.1 创建第一个Pipeline项目点击新建Item选择Pipeline输入项目名称在Pipeline部分选择Pipeline script或Pipeline script from SCM对于简单的测试可以直接在脚本框中输入pipeline { agent any stages { stage(Build) { steps { echo Building... } } stage(Test) { steps { echo Testing... } } stage(Deploy) { steps { echo Deploying... } } } }4.2 集成版本控制系统大多数项目使用Git作为版本控制系统。配置Git集成安装Git插件如果尚未安装进入Manage Jenkins Global Tool Configuration找到Git部分配置Git可执行文件路径通常为/usr/bin/git在项目配置中选择Git作为SCM填写仓库URL和凭据对于需要SSH密钥访问的私有仓库# 在Jenkins服务器上生成SSH密钥对 sudo -u jenkins ssh-keygen -t rsa -b 4096 # 将公钥添加到Git服务提供商 sudo cat /var/lib/jenkins/.ssh/id_rsa.pub4.3 跨平台构建配置Jenkins支持通过节点(Node)机制实现跨平台构建。配置步骤进入Manage Jenkins Manage Nodes and Clouds点击New Node输入节点名称并选择Permanent Agent配置节点属性Remote root directory代理节点上的工作目录Labels为该节点添加标签如linux,windows等Launch method根据目标平台选择SSH、JNLP等在Pipeline中可以通过标签指定运行节点pipeline { agent { label linux } // 其余配置... }注意事项跨节点构建时需要注意文件路径的兼容性建议使用Jenkins提供的路径工具如pwd()和isUnix()来处理平台差异。5. 容器化构建与部署5.1 Docker环境配置首先在Rocky Linux 8.5上安装Dockersudo dnf config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo sudo dnf install -y docker-ce docker-ce-cli containerd.io sudo systemctl enable --now docker sudo usermod -aG docker jenkins配置Docker镜像加速国内服务器建议配置sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://你的镜像加速地址] } EOF sudo systemctl restart docker5.2 在Pipeline中使用DockerJenkins Pipeline可以直接使用Docker容器作为构建环境pipeline { agent { docker { image maven:3.8.4-jdk-11 args -v $HOME/.m2:/root/.m2 } } stages { stage(Build) { steps { sh mvn clean package } } } }对于多容器场景可以使用docker-composestage(Integration Test) { steps { sh docker-compose up -d sh ./run-tests.sh sh docker-compose down } }5.3 Kubernetes集成高级对于Kubernetes集群可以安装Kubernetes插件并配置云安装Kubernetes插件进入Manage Jenkins Manage Nodes and Clouds Configure Clouds添加Kubernetes云配置填写Kubernetes集群详情和凭据然后在Pipeline中可以使用Kubernetes代理pipeline { agent { kubernetes { label my-k8s-agent yaml apiVersion: v1 kind: Pod metadata: labels: some-label: some-value spec: containers: - name: maven image: maven:3.8.4-jdk-11 command: [cat] tty: true volumeMounts: - mountPath: /root/.m2 name: maven-cache volumes: - name: maven-cache emptyDir: {} } } stages { // 阶段定义... } }6. 性能优化与最佳实践6.1 Jenkins系统优化JVM参数调整编辑/etc/sysconfig/jenkins中的JENKINS_JAVA_OPTIONSJENKINS_JAVA_OPTIONS-Djava.awt.headlesstrue -Xms2g -Xmx4g -XX:MaxRAMPercentage70.0 -XX:UseG1GC调整工作线程数在Manage Jenkins System Configuration中设置执行器数量建议为CPU核心数的1.5-2倍定期清理工作空间安装Workspace Cleanup插件或在Pipeline中添加post { always { cleanWs() } }6.2 Pipeline优化技巧并行执行利用parallel步骤加速构建stage(Test) { parallel { stage(Unit Test) { steps { sh ./run-unit-tests.sh } } stage(Integration Test) { steps { sh ./run-integration-tests.sh } } } }条件执行使用when指令stage(Deploy to Staging) { when { branch develop } steps { sh ./deploy-to-staging.sh } }参数化构建parameters { choice(name: DEPLOY_ENV, choices: [dev, staging, prod], description: Select deployment environment) string(name: VERSION, defaultValue: 1.0.0, description: Application version) } stage(Deploy) { steps { script { if (params.DEPLOY_ENV prod) { sh ./deploy-prod.sh ${params.VERSION} } else { sh ./deploy-${params.DEPLOY_ENV}.sh ${params.VERSION} } } } }6.3 监控与日志安装Monitoring插件如Prometheus Metrics、Jenkins Monitoring等配置日志轮转在/etc/logrotate.d/jenkins中添加配置集中式日志将日志发送到ELK或Graylog等系统7. 常见问题排查7.1 插件安装失败现象插件下载超时或安装失败解决方案检查网络连接尝试更换更新中心镜像手动下载.hpi文件并上传安装检查/var/log/jenkins/jenkins.log获取详细错误信息7.2 权限问题现象Pipeline执行时出现权限拒绝错误解决方案确保jenkins用户对相关目录有适当权限检查SELinux上下文ls -Z /path/to/directory使用setfacl设置ACL权限sudo setfacl -Rm u:jenkins:rwx /path/to/directory7.3 Docker连接问题现象Pipeline中无法使用Docker命令解决方案确保jenkins用户在docker组中重启Jenkins服务使组变更生效测试Docker命令是否可用sudo -u jenkins docker ps7.4 内存不足现象构建失败日志显示内存不足解决方案增加Jenkins JVM堆内存对于内存密集型任务使用docker或kubernetes代理隔离环境调整构建工具内存参数如Maven的MAVEN_OPTS8. 安全加固建议定期备份备份/var/lib/jenkins目录最小权限原则为每个项目创建专用凭据和权限插件审计定期检查并移除不必要或过时的插件更新策略保持Jenkins和插件的最新稳定版本网络隔离将Jenkins部署在内网仅暴露必要的端口我在实际部署中发现合理配置的Rocky Linux Jenkins组合能够提供企业级的稳定性和性能。特别是在容器化构建场景下通过合理配置Docker缓存和卷映射可以显著提升构建效率。一个实用的技巧是为Maven/Gradle等工具配置持久化缓存卷避免每次构建都重新下载依赖。
RELATED

相关推荐

VSCode + Cortex-Debug + OpenOCD:打造开源高效的STM32调试环境

VSCode + Cortex-Debug + OpenOCD:打造开源高效的STM32调试环境

1. 项目概述:为什么需要一套趁手的调试配置?如果你用STM32做过开发,大概率经历过这样的场景:代码在IDE里编译通过了,下载到板子上却死活没反应,或者运行到某个地方就卡死了。这时候,你需要的不是…

📅 2026/8/24 12:51:29
reTerminal E开发板外设实战指南:从LED到触摸屏的嵌入式开发

reTerminal E开发板外设实战指南:从LED到触摸屏的嵌入式开发

1. 项目缘起:为什么需要一份“板载外设”的菜谱?如果你刚拿到一块 reTerminal E 系列开发板,第一眼可能会被它丰富的接口和那块漂亮的彩色屏幕吸引。但兴奋过后,一个很现实的问题就来了:这块板子上集成了这么多东西——…

📅 2026/9/8 8:07:32
树形结构与逻辑运算的算法实现与优化

树形结构与逻辑运算的算法实现与优化

1. 题目背景与核心思路解析P11540 [Code #5] 逻辑树是一道典型的树形结构结合逻辑运算的算法题目。这类题目在程序设计竞赛中非常常见,主要考察选手对树结构的理解能力以及逻辑运算的应用技巧。题目通常会给出一个由逻辑运算符(AND/OR/XOR等)…

📅 2026/9/9 15:07:17
MORE NEWS

更多资讯

📰

遥感图像几何校正实战:用 ENVI 配 TaoToken 打通批量处理流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

书霸AI开题报告:从一次填表复盘选题准备

www.shubaai.com写开题报告时,最容易让人卡住的,往往不是“怎么凑够字数”,而是还没想清楚研究要解决什么问题,就急着往下写。复盘一次开题准备,会发现真正影响后续效率的,是前期输入是否具体、研究思路是否…

📰

OpenClaw Agent编排框架实战:从部署到多渠道接入与排障

简介:这套OpenClaw完全指南源码包,面向希望从本地部署到云端托管OpenClaw的开发者、运维人员及初学者,系统梳理了13个相关开源项目,覆盖从环境准备、一键安装到云端上线的完整链路,解决安装配置繁琐、多平台接入难等痛…

📰

杰理之手机存在超出最大距离后再回到正常距离播歌卡顿不恢复【篇】

get max buf size 从机的限制比主机的限制大1k

📰

Claude Code 深度技术研究报告:从 npm 包到 TypeScript 源码的 AI 分析实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

React 重渲染优化:将状态读取延迟到使用点(Defer State Reads to Usage Point)——避免 searchParams 与 localStorage 的不必要订阅

【免费下载链接】open-slide A slide framework built for agents. 项目地址: https://gitcode.com/gh_mirrors/op/open-slide 点击查看 免费下载 本文围绕 open-slide 仓库中 Vercel React 最佳实践技能包(.agents/skills/vercel-react-best-practices…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬