在Linux系统(如Ubuntu/CentOS)上,首先需要安装Jenkins及持续部署所需的工具链。
sudo apt update && sudo apt install jenkins,启动服务sudo systemctl start jenkins并设置开机自启sudo systemctl enable jenkins。wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo,rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key),再运行sudo yum install jenkins;Docker方式更轻量,执行docker pull jenkins/jenkins:lts并启动容器(docker run -d -p 8080:8080 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts)。sudo apt install openjdk-11-jdk)、Maven/Gradle(sudo apt install maven)、Git(sudo apt install git)、Docker(sudo yum install docker并启动服务)等。Jenkins的功能扩展依赖插件,需安装以下核心插件:
http://<服务器IP>:8080),完成初始设置(输入管理员密码、设置用户名/密码)。/usr/bin/git)、Maven/Gradle安装路径(如/usr/local/maven),避免每次手动指定。Pipeline是Jenkins实现持续部署的核心,通过脚本定义“代码拉取→构建→测试→部署”的全流程。
my-app-cd),选择“Pipeline”,点击“OK”。pipeline { agent any // 使用任意可用节点执行 stages { stage('Checkout') { steps { git url: 'https://github.com/your-repo/your-project.git', branch: 'main' // 从Git拉取代码 } } stage('Build') { steps { sh 'mvn clean package' // 使用Maven构建(Java项目),Gradle项目替换为`./gradlew build` } } stage('Test') { steps { sh 'mvn test' // 执行单元测试 } } stage('Deploy to Staging') { steps { script { docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') { // 登录Docker Hub def customImage = docker.build("your-dockerhub-username/your-app:${env.BUILD_NUMBER}") // 构建镜像并打版本标签 customImage.push() // 推送镜像到仓库 } sshPublisher( // 通过SSH连接到远程服务器,执行部署命令 continueOnError: false, failOnError: true, publishers: [ sshPublisherDesc( configName: 'staging-server', // SSH服务器配置名称(需提前在Jenkins中添加) verbose: true, transfers: [ sshTransfer( execCommand: 'cd /opt/app && docker-compose pull && docker-compose up -d', // 拉取最新镜像并重启容器 remoteDirectory: '/opt/app' ) ] ) ] ) } } } } post { always { junit 'target/surefire-reports/*.xml' // 收集测试报告 } success { echo 'Deployment succeeded!' // 构建成功通知 } failure { echo 'Deployment failed!' // 构建失败通知 } } } 注:需提前在Jenkins中配置Docker Hub凭证(“Manage Jenkins”→“Manage Credentials”→“Add Credentials”)和SSH服务器凭证(“Manage Jenkins”→“Manage Credentials”→“Add Credentials”,类型选“SSH Username with private key”)。
为了让Jenkins在代码变更时自动触发部署,需配置触发器:
H/5 * * * *表示每5分钟检查一次Git仓库是否有新提交)。http://<服务器IP>:8080/github-webhook/(GitHub)或http://<服务器IP>:8080/gitlab-webhook/(GitLab)。在Jenkins Job配置中,勾选“GitHub hook trigger for GITScm polling”(GitHub)或“GitLab hook trigger for GITScm polling”(GitLab)。持续部署的核心是将构建产物(如JAR/WAR包、Docker镜像)推送到目标环境(测试/生产服务器)。常见方式如下:
docker pull和docker-compose up -d重启容器(如上述Pipeline示例中的“Deploy to Staging”阶段)。scp命令(需配置SSH密钥),然后重启应用服务(如Tomcat)。示例脚本:stage('Deploy to Production') { steps { sshPublisher( configName: 'production-server', verbose: true, transfers: [ sshTransfer( execCommand: 'systemctl stop tomcat && rm -rf /opt/tomcat/webapps/my-app.war && rm -rf /opt/tomcat/webapps/my-app && scp user@jenkins-server:/opt/jenkins/workspace/my-app-cd/target/my-app.war user@production-server:/opt/tomcat/webapps/ && systemctl start tomcat', remoteDirectory: '/opt/tomcat/webapps' ) ] ) } } kubectl apply -f k8s-deployment.yaml命令,将应用部署到K8s集群。post section配置构建结果通知(如邮件、Slack消息),收集测试报告(junit步骤),方便快速定位问题。docker-compose pull old-image && docker-compose up -d)。通过以上步骤,即可在Linux系统上使用Jenkins实现应用的持续部署,提升开发效率和应用交付速度。需根据实际项目需求调整Pipeline脚本和部署方式(如Spring Boot、Node.js等不同技术栈的构建命令差异)。