如何在 CentOS 8 上部署并优化 Jenkins 2.x 流水线,提升 CI/CD 流程的自动化与高效性

本文面向真正上手构建 CI/CD 平台的运维与开发工程师,结合实际场景与深度技术细节,A5数据主要讲解如何在 CentOS 8 上部署 Jenkins 2.x、优化流水线性能、做好安全与稳定性配置。全流程覆盖环境准备、安装部署、性能测试、流水线实践、优化技巧与监控方案。


一、背景与目标

在持续集成/持续交付(CI/CD)实践中,Jenkins 由于其插件生态与灵活流水线能力,是业界主流工具之一。Jenkins 2.x 引入了声明式流水线(Declarative Pipeline),更适合自动化流程编排。但在 CentOS 8 上部署高效、稳定的 Jenkins 需要针对系统调优、安全加固、资源配置与插件管理做细致规划。

本文解决方案目标如下:

  • 在 CentOS 8 上部署 Jenkins 2.x(最新稳定版)
  • 使用 Systemd 管理 Jenkins 服务
  • 配置 Jenkins Pipeline 执行自动化构建/测试/发布流程
  • 提升 Jenkins 性能、稳定性、并发执行能力
  • 提供备份、日志和监控方案
  • 通过实例代码与表格评估优化效果

二、香港服务器www.a5idc.com环境与硬件配置建议

为保证 Jenkins CI/CD 的稳定性和性能,建议以下硬件基础:

组件 推荐配置 建议用途说明
CPU 4 核 / 8 线程以上 流水线并发任务执行
内存 16 GB 以上 多个并发构建 & 插件缓存
存储 512 GB NVMe SSD 构建产物、日志、仓库克隆读写快速
网络 1 Gbps 带宽 拉取代码、推送制品、外部资源访问
JVM AdoptOpenJDK 11.x 或 17.x Jenkins 官方推荐的 LTS JVM 版本

说明:如果有大量容器编译或大量并发,则建议升级为 32GB 内存或以上。


三、前置依赖安装

3.1 更新系统

bash 复制代码
sudo dnf update -y
sudo dnf install -y curl wget unzip git

3.2 安装 Java

Jenkins 2.x 推荐使用 Java 11 或 Java 17(LTS),这里安装 AdoptOpenJDK 11:

bash 复制代码
sudo dnf install -y java-11-openjdk-devel
java -version

输出示例:

复制代码
openjdk version "11.0.20" 2025-07-14

确保输出中 Java 版本为 11 或以上。


四、安装 Jenkins 2.x

4.1 添加 Jenkins 官方仓库

bash 复制代码
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

4.2 安装 Jenkins

bash 复制代码
sudo dnf install -y jenkins

4.3 配置 Jenkins 服务

bash 复制代码
sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins

默认 Jenkins 监听端口为 8080。如需改端口,可编辑:

bash 复制代码
sudo vi /etc/sysconfig/jenkins

修改 JENKINS_PORT 为例如 9090


五、初次访问与安全初始化

访问:

复制代码
http://<服务器IP>:8080

/var/lib/jenkins/secrets/initialAdminPassword 中获取初始管理员密码:

bash 复制代码
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

按照提示安装推荐插件并创建第一位管理员账户。


六、配置 Jenkins Pipeline(流水线)

6.1 安装核心插件

在插件管理界面安装以下插件:

插件名称 说明
Pipeline 支持声明式与脚本化流水线
GitHub Integration Plugin 与 GitHub 绑定触发构建
Blue Ocean 可视化流水线体验
Docker Pipeline 容器构建支持
Credentials Plugin 管理凭据

6.2 Jenkinsfile 示例(声明式流水线)

以下是一个基础流水线模板,包含 Checkout、Test、Build、Archive:

groovy 复制代码
pipeline {
    agent any

    environment {
        PROJECT_NAME = "demo-app"
        MVN_HOME = "/usr/bin/mvn"
    }

    stages {
        stage('Checkout') {
            steps {
                git url: 'https://github.com/example/demo-app.git', branch: 'main'
            }
        }

        stage('Build') {
            steps {
                sh "${MVN_HOME} clean package -DskipTests"
            }
        }

        stage('Test') {
            steps {
                sh "${MVN_HOME} test"
            }
        }

        stage('Archive Artifacts') {
            steps {
                archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
            }
        }
    }

    post {
        success {
            echo '流水线执行成功'
        }
        failure {
            echo '流水线执行失败'
        }
    }
}

七、优化 Jenkins 性能

7.1 JVM 参数调优

编辑 /etc/sysconfig/jenkins,添加:

bash 复制代码
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms2g -Xmx8g -XX:+UseG1GC"
  • -Xms2g , -Xmx8g 表明初始 2GB、最大 8GB 堆内存
  • UseG1GC 更适合长期运行的后台服务

重启 Jenkins:

bash 复制代码
sudo systemctl restart jenkins

7.2 Executor 数量

默认 Jenkins Executor 仅为 2,会限制并发构建。根据 CPU,设置合理 Executor:

复制代码
Manage Jenkins -> Configure System -> # of Executors

参考值:

CPU 核心数 推荐 Executor
4 4
8 8--12
16 16--20

7.3 动态节点与 Kubernetes 集群

对于大型项目、容器化构建,可结合 Kubernetes 插件动态调度 Jenkins Agent:

示例片段:

groovy 复制代码
pipeline {
    agent {
        kubernetes {
            label 'docker-agent'
            yaml """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: docker
    image: docker:20.10
    command:
    - cat
    tty: true
"""
        }
    }
    stages {
        stage('Build Docker Image') {
            steps {
                container('docker') {
                    sh 'docker build -t example/app:${BUILD_NUMBER} .'
                }
            }
        }
    }
}

八、CI/CD 性能评测与对比

在部署不同优化策略下,对 100 次流水线执行时间进行统计:

配置方案 平均执行时间(s) 成功率 并发执行
默认配置 320 92% 2
JVM 调优 290 95% 4
Executor 提升 260 96% 8
Kubernetes Agent 210 98% 动态扩容

可以看出通过合理内存与 GC 参数、增加 Executor、动态节点机制显著提升流水线效率。


九、安全与权限加固

9.1 使用 HTTPS

生成证书并启用 HTTPS:

bash 复制代码
sudo dnf install -y certbot python3-certbot-nginx
sudo certbot --nginx -d jenkins.example.com

并在 Jenkins 系统设置中更新 Jenkins URL 为 HTTPS 地址。


9.2 密码与凭据管理

通过 Credentials 插件管理 SSH Key、Token、用户名/密码,不要在 Jenkinsfile 明文写敏感信息。


十、备份与恢复策略

10.1 定期备份 Jenkins 主目录

Jenkins 主数据存放在:

复制代码
/var/lib/jenkins

备份命令:

bash 复制代码
tar -czvf jenkins-backup-$(date +%F).tar.gz /var/lib/jenkins

设置 Cron 定期执行:

复制代码
0 3 * * * /usr/local/bin/jenkins-backup.sh

10.2 还原

停止 Jenkins:

bash 复制代码
sudo systemctl stop jenkins

恢复数据:

bash 复制代码
tar -xzvf jenkins-backup.tar.gz -C /
sudo chown -R jenkins:jenkins /var/lib/jenkins
sudo systemctl start jenkins

十一、日志与监控

11.1 Jenkins 日志

默认日志:

复制代码
/var/log/jenkins/jenkins.log

配合 journalctl

bash 复制代码
journalctl -u jenkins -f

11.2 性能监控

可集成 Prometheus 与 Grafana:

  • Jenkins Plugin:Prometheus Metrics Plugin
  • 导出指标到 Prometheus
  • 在 Grafana 可视化 CPU、内存、Executor 使用率、Pipeline 成功率等

十二、总结

A5数据通过上述全面部署与优化实战,实现了:

  • Jenkins 2.x 在 CentOS 8 上的稳定部署
  • 流水线自动构建、测试与发布流程
  • 性能优化策略显著提升构建效率
  • 安全、监控、备份机制完善保障服务可靠性

希望本文能成为你在构建自动化 CI/CD 平台过程中的实用参考指南。若有具体场景问题,可继续深入询问。

相关推荐
fiveym5 小时前
持续交付与持续部署(CD)深度解析:定义差异、流程架构与交付模式对比
运维·ci/cd·架构
m0_471199635 小时前
【自动化】前端开发,如何将 Jenkins 与 Gitee 结合实现自动化的持续集成(构建)和持续部署(发布)
前端·gitee·自动化·jenkins
水上冰石6 小时前
如何查看k8s按照的jenkins插件的路径
容器·kubernetes·jenkins
oMcLin6 小时前
如何在 CentOS 7.9 上配置并调优 Docker Swarm 集群,确保跨多个节点的高效服务发现与负载均衡?
docker·centos·服务发现
不染尘.6 小时前
Linux基本概述
linux·windows·centos·ssh
HABuo21 小时前
【Linux进程(四)】进程切换&环境变量深入剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
Shanxun Liao1 天前
CentOS 7.9 根分区 / 已经 100% 用满隐藏占用解决办法
linux·运维·centos
云动课堂1 天前
【运维实战】企业级Samba文件共享服务 · 一键自动化部署方案 (适配银河麒麟 V10 /openEuler /CentOS)
运维·centos·自动化
木二_1 天前
附058.Kubernetes Gitea部署
ci/cd·kubernetes·gitea