在 Debian 上搭建 Java 项目的持续集成流程
一 环境准备与安装
二 创建流水线任务与触发器
三 示例 Jenkinsfile
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.'
}
}
}
四 质量门禁与扩展
五 运维与安全要点