debian

Debian Java持续集成流程

小樊
31
2025-12-14 21:10:43
栏目: 编程语言

在 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.'
    }
  }
}

四 质量门禁与扩展

五 运维与安全要点

0
看了该问题的人还看了