Jenkins 安装部署与 JDK、Maven、Agent 构建环境配置
Jenkins 是常见的 CI/CD 自动化平台,可以完成代码拉取、编译、测试、静态扫描、打包、制品归档和部署等流程。
这篇文章整理 Jenkins 安装部署、初始化、JDK / Maven 工具配置、Agent 构建节点和安全建议,为后续 GitLab Webhook、自动打包和 SonarQube 扫描打基础。
CI/CD 系列文章
本文属于 Jenkins + GitLab + SonarQube CI/CD 系列,相关内容可以继续阅读:
- Git 提交规范实践:Conventional Commits、Commitizen 与 CHANGELOG 自动生成
- GitLab Docker 部署与 Personal Access Token 配置指南
- Jenkins 安装部署与 JDK、Maven、Agent 构建环境配置
- GitLab Webhook 触发 Jenkins Pipeline:Push、Tag 与 Merge Request 自动构建
- Jenkins 基于 GitLab 分支与 Tag 的自动化打包发布实践
- Jenkins 集成 SonarQube:代码扫描、质量门禁与 Pipeline 实践
- SonarQube Docker 部署与 Java 项目静态代码分析指南
- SonarQube for IDE 使用指南:IntelliJ 安装、Connected Mode 与规则同步
- SonarQube LTA 升级与数据库迁移指南:从旧版本到 8.9/9.9/2025 LTA
安装方式选择
常见安装方式:
| 方式 | 适用场景 |
|---|---|
| Docker | 快速部署、方便迁移 |
| RPM / DEB | 传统服务器部署 |
| Kubernetes | 云原生和弹性 Agent 场景 |
生产环境建议固定 Jenkins LTS 版本,并关注当前 Jenkins 对 Java 版本的要求。
Docker 部署示例
docker run -d \
--name jenkins \
--restart=always \
-p 8080:8080 \
-p 50000:50000 \
-v /opt/data/jenkins:/var/jenkins_home \
jenkins/jenkins:lts-jdk17
注意:不建议无脑使用 root 用户运行 Jenkins;如果确实需要构建 Docker 镜像,也要评估挂载 /var/run/docker.sock 的安全风险。更推荐使用专用 Agent 或受控构建环境。
初始化 Jenkins
查看初始密码:
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
首次访问:
http://<jenkins-host>:8080
建议安装插件:
- Git
- GitLab
- Pipeline
- Maven Integration
- SonarQube Scanner
- Credentials Binding
配置 JDK
路径:
Manage Jenkins -> Tools -> JDK installations
建议:
- Jenkins 控制节点使用官方推荐 Java 版本。
- 构建项目需要的 JDK 可以配置在 Tools 或 Agent 上。
- 多 JDK 项目不要共用模糊命名,建议
jdk8、jdk17、jdk21。
Pipeline 示例:
pipeline {
agent any
tools {
jdk 'jdk17'
maven 'maven-3.9'
}
stages {
stage('Build') {
steps {
sh 'java -version'
sh 'mvn -version'
}
}
}
}
配置 Maven
路径:
Manage Jenkins -> Tools -> Maven installations
建议同时配置 Maven settings.xml:
- 私服地址。
- 镜像仓库。
- 凭据不要明文写入项目。
- 本地仓库按 Agent 隔离。
Agent 构建节点
不建议所有任务都跑在 Controller 上。更合理的方式是:
- Controller 负责调度。
- Agent 负责具体构建。
- 不同语言使用不同 Agent。
- 高风险构建隔离执行。
常见 Agent 类型:
- SSH Agent。
- Docker Agent。
- Kubernetes Pod Agent。
安全建议
- 禁止匿名访问管理功能。
- 使用 Matrix Authorization 或角色权限控制。
- 所有 Token 放入 Jenkins Credentials。
- 不要在 Shell 中打印密码。
- 插件定期升级。
- Jenkins Home 定期备份。
- 构建节点与生产环境权限隔离。
常见问题
1. Jenkins 启动失败
检查 Java 版本、端口占用和 Jenkins Home 权限。
docker logs -f jenkins
2. Maven 找不到
检查 Jenkins Tools 中 Maven 名称是否与 Jenkinsfile 中一致。
3. 构建中需要 Docker
不要直接把 Docker 权限开放给所有任务。建议使用专用 Agent,并限制 Job 权限。
参考资料
License:
CC BY 4.0