温馨提示×

Jenkins在Ubuntu上部署有哪些技巧

小樊
46
2026-06-30 15:38:32
栏目: 智能运维

在 Ubuntu 上部署 Jenkins,除了“能跑起来”,更关键的是稳定、可维护、易扩展。下面按实战经验给你一套比较完整的技巧与最佳实践,适合生产环境。


一、系统准备与版本选择

1️⃣ 使用 LTS 版本(强烈推荐)

wget -q -O - www.example.com | sudo apt-key add -
sudo sh -c 'echo deb www.example.com binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins

✅ 原因:

  • 更安全
  • 插件兼容性更好
  • 生产环境首选

2️⃣ Java 版本选择(非常关键)

Jenkins 对 Java 版本非常敏感

Jenkins 版本 推荐 Java
2.401+ Java 17 ✅
老版本 Java 11
sudo apt install openjdk-17-jdk
java -version

⚠️ 不建议:

  • Java 8(已淘汰)
  • Java 21(部分插件不兼容)

二、安装方式对比(重要)

✅ 推荐方式

方式 适用场景
apt 安装 单机、传统服务器
Docker 云环境、CI 隔离
Docker + systemd 生产较推荐

❌ 不推荐

  • 手动下载 war 跑 java -jar
  • root 用户直接运行 Jenkins

三、权限与安全(生产必做)

1️⃣ 禁止 root 运行

Ubuntu 默认:

用户:jenkins
目录:/var/lib/jenkins

检查:

ps aux | grep jenkins

2️⃣ 修改默认端口(防止扫描)

编辑:

sudo vim /etc/default/jenkins
HTTP_PORT=8081

重启:

sudo systemctl restart jenkins

3️⃣ 开启防火墙

sudo ufw allow 8081
sudo ufw enable

四、反向代理(Nginx 必备)

1️⃣ 安装 Nginx

sudo apt install nginx

2️⃣ 配置示例

server {
    listen 80;
    server_name jenkins.example.com;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

✅ 好处:

  • 支持 HTTPS
  • 统一入口
  • 更安全

五、Jenkins 初始化技巧

1️⃣ 解锁密码位置

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

2️⃣ 插件建议

✅ 必装:

  • Pipeline
  • Git
  • Docker Pipeline
  • Credentials Binding

❌ 避免:

  • 一次性全选安装(容易冲突)

六、存储与备份(非常重要)

1️⃣ Jenkins 主目录

/var/lib/jenkins

2️⃣ 备份策略

✅ 推荐备份:

jobs/
plugins/
credentials.xml
config.xml
users/
secrets/

示例脚本:

tar czf jenkins-backup-$(date +%F).tar.gz /var/lib/jenkins

七、性能与稳定性优化

1️⃣ JVM 参数优化

编辑:

sudo vim /etc/default/jenkins

示例:

JAVA_OPTS="-Xms512m -Xmx2048m"

2️⃣ 避免主节点跑任务

✅ 强烈建议:

  • Master 只做调度
  • 构建交给 Agent

八、Agent(节点)部署技巧

1️⃣ Agent 类型

类型 推荐
SSH Agent ✅ 稳定
Docker Agent ✅ 弹性
Web Agent ❌ 不推荐

2️⃣ Docker Agent 示例

pipeline {
    agent {
        docker { image 'maven:3.9' }
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
    }
}

九、升级与维护

1️⃣ 升级 Jenkins

sudo apt update
sudo apt upgrade jenkins

升级前:

  • ✅ 备份
  • ✅ 查看插件兼容性

2️⃣ 定期清理

Manage Jenkins → System → Build Discarders

防止磁盘爆满。


十、常见坑总结(经验)

问题 解决
插件安装失败 换国内源
端口冲突 改默认 8080
磁盘爆满 定期清理历史
构建卡死 不用 master 构建
权限问题 检查 JENKINS_USER

✅ 推荐生产级结构

Nginx
  ↓
Jenkins Master(Ubuntu)
  ↓
Docker / SSH Agents

如果你愿意,我可以:

  • ✅ 给你一套 Docker + Jenkins 完整部署方案
  • ✅ 帮你设计 CI/CD Pipeline
  • ✅ 根据 你的项目(Java / 前端 / 微服务)定制 Jenkins 架构

你现在是用 Jenkins 做什么类型的项目?

0