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等工具配置持久化缓存卷避免每次构建都重新下载依赖。

相关新闻

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

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

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

2026/8/6 17:44:31 阅读更多 →
【科研速递·内含译文】CRST | 青藏高原不稳定富冰多年冻土区桥梁运营期周边冻土热特性监测

【科研速递·内含译文】CRST | 青藏高原不稳定富冰多年冻土区桥梁运营期周边冻土热特性监测

Monitoring the thermal characteristics of surrounding permafrost during bridge operation in unstable and high ice content permafrost site of the Qinghai-Tibet Plateau 中国科学院西北生态环境资源研究院等团队在期刊 Cold Regions Science and Technology 在线发表…

2026/8/6 17:50:11 阅读更多 →
文案秒变爆款视频:3步工作流+5大避坑指南,AI视频生成效率提升300%的底层逻辑

文案秒变爆款视频:3步工作流+5大避坑指南,AI视频生成效率提升300%的底层逻辑

更多请点击: https://kaifayun.com 第一章:AI视频生成的范式革命:从文案到成片的底层逻辑跃迁 传统视频制作依赖分镜脚本、实拍剪辑与后期合成,耗时数周甚至数月;而新一代AI视频生成系统正将这一流程压缩至分钟级——…

2026/8/6 19:34:08 阅读更多 →

最新新闻

GetQzonehistory:QQ空间数据归档的技术架构与实现分析

GetQzonehistory:QQ空间数据归档的技术架构与实现分析

GetQzonehistory:QQ空间数据归档的技术架构与实现分析 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 数据归档工具的技术价值定位 在数字资产管理领域,社交平台…

2026/8/7 15:55:53 阅读更多 →
3分钟完成地图数据可视化:浏览器中的全能GeoJSON编辑器geojson.io

3分钟完成地图数据可视化:浏览器中的全能GeoJSON编辑器geojson.io

3分钟完成地图数据可视化:浏览器中的全能GeoJSON编辑器geojson.io 【免费下载链接】geojson.io A quick, simple tool for creating, viewing, and sharing spatial data 项目地址: https://gitcode.com/gh_mirrors/ge/geojson.io 还在为复杂的地理信息系统软…

2026/8/7 15:55:53 阅读更多 →
B站字幕提取终极方案:3分钟免费获取高清字幕的完整指南

B站字幕提取终极方案:3分钟免费获取高清字幕的完整指南

B站字幕提取终极方案:3分钟免费获取高清字幕的完整指南 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 还在为B站视频的字幕提取而烦恼吗?…

2026/8/7 15:55:53 阅读更多 →
SoapUI实战秘籍:5个API测试痛点的高效解决方案

SoapUI实战秘籍:5个API测试痛点的高效解决方案

SoapUI实战秘籍:5个API测试痛点的高效解决方案 【免费下载链接】soapui SoapUI is a free and open source cross-platform functional testing solution for APIs and web services. 项目地址: https://gitcode.com/gh_mirrors/so/soapui 你是否曾面对复杂的…

2026/8/7 15:55:53 阅读更多 →
ESP32 C++开发入门:基于Arduino框架的保姆级环境搭建与首个程序

ESP32 C++开发入门:基于Arduino框架的保姆级环境搭建与首个程序

如果你刚拿到一块ESP32开发板,想用C语言快速上手开发,却发现网上教程要么太零散,要么直接让你从零配置复杂的编译环境——这篇文章就是为你准备的。 很多开发者对ESP32有个误解:以为必须用乐鑫官方的ESP-IDF框架,或者…

2026/8/7 15:55:52 阅读更多 →
终极指南:免费在电脑上玩Switch游戏的yuzu模拟器完整教程

终极指南:免费在电脑上玩Switch游戏的yuzu模拟器完整教程

终极指南:免费在电脑上玩Switch游戏的yuzu模拟器完整教程 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 想要在电脑上体验《塞尔达传说:旷野之息》、《超级马里奥:奥德赛》等任…

2026/8/7 15:54:52 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →