Ubuntu Java 持续集成实操指南
一 环境准备
- 安装 JDK 11 或 17(Ubuntu 20.04/22.04 推荐 LTS 版本):
- 安装 OpenJDK 11:sudo apt update && sudo apt install -y openjdk-11-jdk
- 或安装 OpenJDK 17:sudo apt update && sudo apt install -y openjdk-17-jdk
- 验证:java -version
- 安装 Maven 与 Git:
- sudo apt install -y maven git
- 验证:mvn -v、git --version
- 说明:Jenkins 基于 Java,建议优先选择 JDK 11/17 的稳定版本,以兼顾兼容性与安全性。
二 安装与启动 Jenkins
- 添加 Jenkins 官方仓库并安装:
- wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
- echo “deb http://pkg.jenkins.io/debian-stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list
- sudo apt update && sudo apt install -y jenkins
- 启动与开机自启:
- sudo systemctl start jenkins
- sudo systemctl enable jenkins
- 访问与解锁:
- 浏览器打开:http://<服务器IP>:8080
- 初始密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- 首次进入建议安装“推荐插件”,并创建管理员账户。
三 创建 Pipeline 任务与 Jenkinsfile
- 在 Jenkins 中新建任务:选择 Pipeline,在“Pipeline”配置里选择“Pipeline script from SCM”,SCM 选 Git,填写仓库 URL 与凭据,指定 Jenkinsfile 路径(如根目录)。
- 项目根目录添加 Jenkinsfile(示例为 Maven 项目):
pipeline {
agent any
tools {
maven 'Maven' // 需在 Global Tool Configuration 中配置 Maven 名称
jdk 'JDK11' // 需在 Global Tool Configuration 中配置 JDK 名称
}
stages {
stage('Checkout') {
steps { git url: 'https://github.com/your-org/your-java-app.git', branch: 'main' }
}
stage('Build') {
steps { sh 'mvn -B -DskipTests clean package' }
}
stage('Test') {
steps { sh 'mvn test' }
}
stage('Archive') {
steps { archiveArtifacts artifacts: 'target/*.jar', fingerprint: true }
}
}
post {
always {
junit 'target/surefire-reports/*.xml'
cleanWs()
}
success {
echo 'Build and tests passed.'
}
failure {
echo 'Build or tests failed.'
}
}
}
- 要点:
- 在 Jenkins 管理界面配置 Global Tool Configuration(JDK、Maven、Git 路径/自动安装)。
- 通过“构建后操作”发布 JUnit 报告,便于在界面查看测试结果趋势。
四 触发方式与通知
- 自动触发构建:
- 在 GitHub 仓库 “Settings → Webhooks” 添加 Webhook:
- Payload URL:http://:8080/github-webhook/
- Content type:application/json
- Events:Just the push event
- 在 Jenkins 任务中勾选 “GitHub hook trigger for GITScm polling” 以接收推送事件。
- 可选通知:
- 安装 Locale 等常用插件改善使用体验。
- 结合邮件或企业微信/钉钉机器人,在构建成功/失败时发送通知(需相应插件与 webhook 配置)。
五 常见问题与优化
- Java 版本与兼容性:
- 部分旧版本 Jenkins 2.361.x 与 JDK 8 存在兼容性问题,生产环境建议使用 JDK 11/17 并匹配相应 Jenkins 版本。
- 端口与权限:
- 默认端口 8080 冲突时,可编辑 /lib/systemd/system/jenkins.service 调整端口,执行 systemctl daemon-reload 后重启;必要时配置 JENKINS_HOME、运行用户与权限。
- 构建环境一致性:
- 使用 Jenkins 的 agent 与“工具自动安装”,减少“本地能跑、CI 失败”的环境差异;必要时采用 Docker 镜像作为构建代理,固化依赖版本。
- 日志与排错:
- 查看 Jenkins 启动与运行日志:/var/log/jenkins/jenkins.log,定位插件、权限、网络等问题。