Jenkins 部署与 SonarQube 代码质量平台搭建
Jenkins 部署与 SonarQube 代码质量平台搭建
公司内网环境要搭一套 CI,外网源一律不通,所有安装包都得先下载好再传进去。这种”离线两件套”(Jenkins + SonarQube)我装过两遍:第一遍边查文档边试,踩了权限和字体两个坑;第二遍顺手多了,这篇把完整流程整理出来。
一、为什么是 Jenkins
Jenkins 是基于 Java 的开源持续集成工具,监控持续重复的工作——拉代码、编译、测试、打包、部署,把这些动作从”人肉按顺序敲”变成”点一下按钮”。
它的定位是调度中心:自己不做具体的事,靠插件和脚本串联起 GitLab、SonarQube、构建机、部署目标。这也是它装完之后第一件事是装插件的原因。
二、部署:从 JDK 到启动
Jenkins 2.4xx 之后的版本需要 JDK 11 以上,我用的 JDK 17。
1 | # 1. 安装 JDK |
安装完先别急启动,有两个配置要改:
1 | # 3. 调整端口与启动用户 |
这里有个我踩过的坑:只改了 JENKINS_USER 没改 systemd 单元里的 User=,结果服务表面启动成功,但工作目录还是落在旧用户家目录,构建产物找不到。两个地方都改、然后 daemon-reload,缺一不可。
三、初始化与插件离线安装
启动后用浏览器访问 http://10.0.8.201:8082,第一步是解锁,初始密码在:
1 | cat /var/lib/jenkins/secrets/initialAdminPassword |
解锁后按向导创建管理员账号。用默认账号 admin 改完密码会要求重新登录,属正常流程。
内网环境装插件是另一个坎:在线插件市场连不上,只能用离线包。
1 | # 手动插件包:上传压缩包到 Jenkins 家目录,解压进 plugins 目录 |
离线包是提前在外网环境按”要用的插件清单”装好整套目录打包的。注意插件之间有依赖,一个个单独下很容易漏依赖,直接整目录打包最稳。
四、第一个测试项目:看懂 workspace
创建第一个自由风格项目,构建步骤里执行 pwd,就能看到 Jenkins 的工作目录机制:
1 | # 项目构建一次后,看看工作目录 |
规则很简单:每个项目在 /var/lib/jenkins/workspace/ 下有自己的目录,代码、构建产物都在里面。后面”Jenkins 拉取 GitLab 代码”就是把仓库内容拉到这个目录里,理解了这个目录,后面所有构建问题都有了排查起点。
五、SonarQube:代码质量检测平台
CI 光跑通还不够,还得有人管代码质量。SonarQube 就是干这个的:扫描代码,标出 bug、漏洞、坏味道。部署前先看要求:
- 基于 Java,这个版本需要 JDK 8;
- 依赖 MySQL,5.6 以上;
- 小型实例至少 4G 内存,团队用建议 8G 起。
服务端部署
1 | # 1. 运行环境 |
1 | # 3. 安装 SonarQube |
1 | # 6. 配置数据库连接:/usr/local/sonarqube/conf/sonar.properties |
1 | # 7. 启动(SonarQube 不允许 root 运行,必须普通用户) |
“不能用 root 启动”这条要特别记住,我第一次直接 root 跑,日志里一句含糊的报错,查了半天才定位到是启动用户的问题。生产上这类中间件都应该建专用账号跑。
启动后访问 http://10.0.8.203:9000,默认账号密码都是 admin,第一次登录强制改密码。然后去”我的账号 → 安全”生成一个 Token——Token 只显示一次,当场复制保存,扫描客户端要用它认证。
扫描客户端:sonar-scanner
sonar-scanner 装在 Jenkins 服务器上,让它能主动把代码推给 SonarQube 扫描:
1 | # 1. 解压并做软链接 |
执行完去 SonarQube 的”项目”页面就能看到这次扫描的结果。到这一步,Jenkins 和 SonarQube 还是两个独立的系统,后面把它们串进同一条流水线,才算完整的质量门禁。
收尾
这套平台搭建的核心经验其实就三条:内网环境提前备好离线安装包、启动用户和权限按规矩配、SonarQube 这类组件用专用账号运行。装完只是开始,让它稳定跑在生产上,靠的是后面插件管理和流水线的持续维护。


