Jenkins在Ubuntu上的部署有哪些技巧
导读:Jenkins在Ubuntu上的部署技巧 一 基础安装与环境准备 选择长期支持版本:优先使用 Ubuntu 22.04 LTS,兼顾稳定性与软件生态。 Java 版本取舍:新版本 Jenkins 通常要求 Java 11 或 17;若遇到...
Jenkins在Ubuntu上的部署技巧
一 基础安装与环境准备
- 选择长期支持版本:优先使用 Ubuntu 22.04 LTS,兼顾稳定性与软件生态。
- Java 版本取舍:新版本 Jenkins 通常要求 Java 11 或 17;若遇到插件兼容问题,可回退到 OpenJDK 11 以提升稳定性。
- 添加官方仓库与安装(示例为稳定版仓库):
- 导入密钥与源(新版 Ubuntu 推荐将密钥放入 keyring):
- wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.keys | sudo gpg --dearmor | sudo tee /usr/share/keyrings/jenkins-keyring.gpg > /dev/null
- echo “deb [signed-by=/usr/share/keyrings/jenkins-keyring.gpg] https://pkg.jenkins.io/debian stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
- 安装与启动:
- sudo apt update & & sudo apt install jenkins openjdk-17-jdk -y
- sudo systemctl start jenkins & & sudo systemctl enable jenkins
- 导入密钥与源(新版 Ubuntu 推荐将密钥放入 keyring):
- 首次访问与解锁:
- 打开浏览器访问 http://< 服务器IP> :8080
- 初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- 防火墙放行:sudo ufw allow 8080/tcp;云服务器需同步在安全组放行端口。
二 安全加固与权限控制
- 启用全局安全:进入 Manage Jenkins → Configure Global Security,勾选 Enable security。
- 身份与授权:
- 安全领域可选 Jenkins 自有用户数据库 或 LDAP/AD。
- 授权策略建议 Matrix-based security 或 Role-Based Strategy,按用户/组/项目粒度授权。
- 凭据管理:使用 Credentials Binding 插件集中管理 SSH 密钥、用户名/密码、API Token,避免明文散落。
- 传输加密:为 8080 端口配置 反向代理 + HTTPS/TLS(如 Nginx/Apache + Let’s Encrypt),避免明文传输。
- 最小权限原则:禁用匿名访问,限制脚本执行与节点创建权限,定期审计用户与权限分配。
三 性能优化与高可用
- JVM 与系统资源:
- 编辑 /etc/default/jenkins,设置 JAVA_ARGS=“-Xmx4096m -Xms2048m”(按内存与负载调整)。
- 合理设置 Executors(并发构建数),避免 CPU 过度争用。
- 构建环境优化:
- 使用 构建代理节点 分担主节点压力,按标签(如 linux、docker)调度任务。
- 在 Global Tool Configuration 正确配置 JDK、Git、Maven/Gradle、Docker,并启用依赖缓存(如本地 Maven 仓库)。
- 定期清理工作区与构建产物,使用 Workspace Cleanup 插件减少磁盘占用。
- 监控与调优:结合 Java VisualVM/JConsole 观察堆与线程,必要时调整 GC 策略与构建队列。
- 高可用思路:
- 架构上采用 Master–Agent 分布式构建,主节点专注调度与安全管控。
- 对外入口层引入 Keepalived + VRRP 实现 VIP 漂移,降低单点故障风险。
四 自动化部署与流水线实践
- 插件组合:常用 Git、Pipeline、Docker、SSH Pipeline Steps(publishOverSSH) 等,满足拉取代码、构建、测试、发布全流程。
- Pipeline 示例(Maven + SSH 发布):
- pipeline { agent any tools { maven ‘Maven-3’ jdk ‘OpenJDK-11’ } stages { stage(‘Build’) { steps { sh ‘mvn -B -DskipTests clean package’ } } stage(‘Deploy’) { steps { publishOverSSH( transfers: [ sshTransfer( sourceFiles: ‘target/*.jar’, removePrefix: ‘target’, remoteDirectory: ‘/opt/app’ ) ], verbose: true ) } } } }
- 触发策略:
- 简单轮询:在 Build Triggers 选择 Poll SCM,如 **H/5 * * * ***(每5分钟检查一次)。
- Webhook:结合 GitLab/GitHub Webhooks 实现代码推送即构建,减少延迟。
- 多环境部署:在 Pipeline 中使用 参数化构建 与 部署阶段矩阵(如 dev/staging/prod),配合凭据与审批流程,降低误操作风险。
五 运维与故障排查要点
- 日志与诊断:
- 查看服务状态:systemctl status jenkins
- 查看启动日志:sudo journalctl -u jenkins -f
- 查看解锁密码与初始化日志:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- 升级与回滚:
- 先备份 $JENKINS_HOME(含 jobs、plugins、config.xml),再执行 apt 升级;出现异常可快速回滚目录与版本。
- 插件与更新站点:
- 仅安装必要插件,定期更新;如遇插件中心访问慢,可在 Manage Plugins → Advanced 将 Update Site 改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 提升下载速度。
- 常见问题速解:
- 端口占用:检查 8080 是否被其他进程占用(ss -ltnp | grep 8080),必要时修改 /etc/default/jenkins 中的 HTTP_PORT 并重启。
- Java 不兼容:切换 OpenJDK 11/17 版本,保持与 Jenkins 版本矩阵一致。
- 权限错误:确认代理节点与主节点的 SSH 免密登录 与目录权限(如 Remote root directory 可写)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在Ubuntu上的部署有哪些技巧
本文地址: https://pptw.com/jishu/751381.html
