Debian Java持续集成流程
导读:在 Debian 上搭建 Java 项目的持续集成流程 一 环境准备与安装 安装 OpenJDK 11(或项目所需的 OpenJDK 17): sudo apt update && sudo apt install -y...
在 Debian 上搭建 Java 项目的持续集成流程
一 环境准备与安装
- 安装 OpenJDK 11(或项目所需的 OpenJDK 17):
- sudo apt update & & sudo apt install -y openjdk-11-jdk
- java -version
- 安装 Maven(如使用 Maven 构建):
- sudo apt install -y maven
- 安装 Jenkins(Debian 官方仓库方式):
- wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
- echo deb https://pkg.jenkins.io/debian binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
- sudo apt update & & sudo apt install -y jenkins
- 启动与开机自启:
- sudo systemctl enable --now jenkins
- 访问控制台:浏览器打开 http://< 服务器IP> :8080,首次解锁密码在 /var/lib/jenkins/secrets/initialAdminPassword
- 防火墙放行端口(如使用 UFW):
- sudo ufw allow 8080
以上步骤完成 Debian 上的 Java + Maven + Jenkins 基础环境搭建。
- sudo ufw allow 8080
二 创建流水线任务与触发器
- 安装常用插件:Git、Maven Integration、Pipeline、JUnit(用于测试报告收集)。
- 新建任务:选择 Pipeline,在配置中指定 Pipeline script from SCM,SCM 选 Git,填写仓库 URL 与凭据,Script Path 为 Jenkinsfile。
- 触发方式:
- 轮询 SCM:在“Build Triggers”中配置 Poll SCM(如 H/5 * * * * 每5分钟检查一次变更)。
- Webhook(推荐):在代码托管平台(GitHub/GitLab)添加 Webhook,指向 http:///github-webhook/,事件选择 push;Jenkins 任务启用 “GitHub hook trigger for GITScm polling”。
上述配置可实现代码提交即自动触发构建。
三 示例 Jenkinsfile
- 功能涵盖:检出代码、构建打包、单元测试、测试报告归档、产物归档、部署到远程主机(SSH)。
- 请将占位符替换为你的实际值:仓库地址、凭据 ID、目标主机与路径、JAR 名称等。
pipeline {
agent any
tools {
maven 'Maven 3' // 需在 Jenkins 全局工具配置中预先配置 Maven
jdk 'OpenJDK 11' // 需在 Jenkins 全局工具配置中预先配置 JDK
}
environment {
JAR_NAME = 'your-app.jar'
REMOTE_HOST = 'user@your-server'
DEPLOY_DIR = '/opt/app'
ARTIFACT = "target/${
JAR_NAME}
"
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/yourorg/your-java-app.git'
}
}
stage('Build') {
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: "${
ARTIFACT}
", fingerprint: true
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
withCredentials([sshUserPrivateKey(credentialsId: 'your-ssh-credentials-id', keyFileVariable: 'SSH_KEY')]) {
sh '''
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no $REMOTE_HOST \
"mkdir -p $DEPLOY_DIR"
scp -i "$SSH_KEY" -o StrictHostKeyChecking=no $ARTIFACT $REMOTE_HOST:$DEPLOY_DIR/
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no $REMOTE_HOST \
"systemctl --user restart your-app || nohup java -jar $DEPLOY_DIR/$JAR_NAME >
app.log 2>
&
1 &
"
'''
}
}
}
}
post {
success {
echo 'Build and deploy succeeded.'
}
failure {
echo 'Build or deploy failed.'
}
}
}
- 说明:
- 测试阶段使用 JUnit 插件收集报告,路径为 target/surefire-reports/*.xml。
- 部署阶段使用 withCredentials + sshUserPrivateKey 安全地注入 SSH 私钥,通过 SCP 上传 JAR 并执行远程启动命令;可按需改为 systemd 服务管理或蓝绿/滚动发布脚本。
四 质量门禁与扩展
- 质量分析集成(可选):在 Jenkins 中安装 SonarQube Scanner 插件,创建 SonarQube 服务并配置服务器地址与凭据;在 Jenkinsfile 的构建阶段加入 Sonar 分析步骤,实现代码质量门禁与度量可视化。
- 通知与报告:
- 测试报告:使用 JUnit 插件归档与展示测试结果。
- 构建产物:使用 Archive Artifacts 归档 JAR/WAR。
- 通知:可结合邮件或即时通讯插件在构建成功/失败时告警。
这些扩展能显著提升质量可追溯性与交付信心。
五 运维与安全要点
- 安全加固:
- 为 Jenkins 管理界面启用 强认证 与 基于角色的访问控制(RBAC)。
- 使用 SSH 密钥 或 凭据存储 管理代码与部署凭据,避免明文。
- 限制 8080 端口访问来源,仅允许内网或受控网段。
- 高可用与可观测:
- 定期 备份 Jenkins 目录(含 jobs/、credentials/ 等)。
- 监控 Jenkins 服务状态 与 构建队列,必要时横向扩容 Agent。
- 常见问题排查:
- 无法访问 8080:检查服务状态(sudo systemctl status jenkins)、防火墙与云安全组。
- 插件安装失败:更换 更新源 或离线安装 .hpi 包。
- 构建失败:查看 Console Output 与 测试报告 定位问题。
以上做法有助于保障 CI 环境的稳定与安全。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Java持续集成流程
本文地址: https://pptw.com/jishu/771794.html
