Debian Java项目集成CI/CD的完整流程
在Debian系统上集成CI/CD前,需先安装Java开发环境、构建工具及CI服务器。以Jenkins为例,具体步骤如下:
sudo apt update && sudo apt install -y openjdk-11-jdk 验证安装:java -version(需显示Java版本信息)。sudo apt install -y maven 验证安装:mvn -v(需显示Maven版本及Java版本)。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 启动Jenkins并设置开机自启:sudo systemctl start jenkins && sudo systemctl enable jenkins 访问http://<服务器IP>:8080,输入初始密码(位于/var/lib/jenkins/secrets/initialAdminPassword)完成初始配置。Manage Jenkins → Manage Plugins),安装以下插件: Manage Jenkins → Global Tool Configuration,设置Java和Maven路径(通常自动检测,无需手动修改)。New Item,输入名称(如java-ci-demo),选择Freestyle project,点击OK。Source Code Management中选择Git,填写仓库URL(如https://github.com/your-repo/java-project.git),若有私有仓库需配置凭证。Build Triggers中选择触发方式(如Poll SCM定时检查代码变更,或GitHub hook trigger for GITScm polling通过Webhook触发)。Build中添加Invoke top-level Maven targets步骤,输入Maven命令(如clean install,用于编译、测试、打包)。Post-build Actions中可选择生成测试报告(如Publish JUnit test result report)、归档构建产物(如Archive the artifacts)或发送邮件通知。Jenkinsfile,定义流水线步骤(示例如下):pipeline { agent any stages { stage('Build') { steps { sh 'mvn clean package' // 编译打包 } } stage('Test') { steps { sh 'mvn test' // 运行测试 } } stage('Deploy') { steps { // 部署到测试服务器(需配置SSH凭证) withCredentials([sshUserPrivateKey(credentialsId: 'server-ssh-key', keyFileVariable: 'SSH_KEY')]) { sh 'scp ${WORKSPACE}/target/*.jar user@test-server:/opt/apps/' } } } } } New Item,输入名称(如java-pipeline-demo),选择Pipeline,点击OK。Pipeline section选择Pipeline script from SCM,SCM选择Git,填写仓库URL,脚本路径填写Jenkinsfile(即项目根目录下的Jenkinsfile)。Manage Jenkins → Manage Credentials,添加Git仓库的访问凭证(如HTTPS用户名密码或SSH私钥)。Poll SCM或Webhook)实现代码提交后自动构建;Build Now手动启动构建。在Pipeline的Deploy阶段,可通过SSH将构建产物(如JAR文件)部署到测试或生产服务器。示例如下:
stage('Deploy') { steps { withCredentials([sshUserPrivateKey(credentialsId: 'server-ssh-key', keyFileVariable: 'SSH_KEY')]) { sh 'scp ${WORKSPACE}/target/*.jar user@test-server:/opt/apps/' sh 'ssh -i ${SSH_KEY} user@test-server "systemctl restart java-app.service"' // 重启服务(需提前配置) } } } 需提前在测试服务器上配置好SSH密钥认证,并编写启动脚本(如java-app.service)。
Build History查看每次构建的结果(成功/失败)。Console Output查看详细日志,用于调试问题。Global Tool Configuration中配置MAVEN_OPTS,添加-Dmaven.repo.local=/var/maven/repo);pom.xml中配置maven-surefire-plugin的parallel参数)。