Jenkins如何在Linux上实现自动化部署
导读:1. 准备Linux服务器环境 在开始配置前,需确保Linux服务器(如Ubuntu 22.04/CentOS 7)满足基础要求:  安装Java环境:Jenkins依赖Java运行,推荐安装OpenJDK 11及以上版本(如sudo ap...
    
1. 准备Linux服务器环境
在开始配置前,需确保Linux服务器(如Ubuntu 22.04/CentOS 7)满足基础要求:
- 安装Java环境:Jenkins依赖Java运行,推荐安装OpenJDK 11及以上版本(如
sudo apt install openjdk-11-jdk -y)。 - 安装Git:用于从代码仓库(如GitHub、GitLab)拉取最新代码(
sudo yum install git -y或sudo apt install git -y)。 - 生成SSH密钥:将服务器公钥添加到代码仓库(如GitHub),实现Jenkins无密码访问。执行
ssh-keygen -t rsa -C "your_email@example.com",将生成的~/.ssh/id_rsa.pub内容复制到仓库的SSH Keys设置中。 
2. 安装与配置Jenkins
- 安装Jenkins:
- Ubuntu/Debian:添加Jenkins官方仓库并安装(
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -;sudo sh -c 'echo deb http://pkg.jenkins.io/debian stable binary/ > /etc/apt/sources.list.d/jenkins.list';sudo apt update & & sudo apt install jenkins -y)。 - CentOS/RHEL:使用YUM仓库安装(
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo;sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key;sudo yum install jenkins -y)。 
 - Ubuntu/Debian:添加Jenkins官方仓库并安装(
 - 启动服务:
sudo systemctl start jenkins;sudo systemctl enable jenkins(设置开机自启)。 - 访问Web界面:浏览器输入
http://< 服务器IP> :8080,使用/var/lib/jenkins/secrets/initialAdminPassword中的初始密码登录,完成初始设置(如安装推荐插件)。 
3. 配置Jenkins必要插件
进入“Manage Jenkins”→“Manage Plugins”,安装以下核心插件:
- Git Plugin:用于拉取代码仓库中的代码。
 - Pipeline Plugin:支持定义自动化部署流水线(如声明式/脚本式Pipeline)。
 - Publish Over SSH:通过SSH将构建产物传输到目标服务器。
 - Maven Integration Plugin(可选):若项目使用Maven构建,需安装此插件以调用Maven命令。
 
4. 关联Linux服务器与Jenkins
- 开启SSH服务:确保Linux服务器SSH服务运行(
sudo systemctl status ssh),若未开启则执行sudo systemctl start ssh。 - 添加SSH节点:
- 进入Jenkins“Manage Jenkins”→“Manage Nodes and Clouds”→“New Node”。
 - 输入节点名称(如
linux-server),选择“Permanent Agent”,点击“OK”。 - 配置节点信息:
- Remote root directory:设置为Linux上的Jenkins工作目录(如
/home/jenkins,需提前创建)。 - Credentials:添加SSH凭据(选择“SSH Username with private key”,输入Linux服务器用户名及私钥内容)。
 
 - Remote root directory:设置为Linux上的Jenkins工作目录(如
 - 点击“Test Connection”,确认连接成功后保存。
 
 
5. 创建自动化部署Pipeline
- 新建Pipeline任务:进入Jenkins主页,点击“New Item”,输入任务名称(如
auto-deploy-maven),选择“Pipeline”,点击“OK”。 - 配置Pipeline脚本:
- Pipeline script from SCM(推荐):从代码仓库拉取Pipeline脚本(如
Jenkinsfile),需指定SCM类型(如Git)、仓库URL(如https://github.com/your-repo/project.git)及分支(如main)。 - Pipeline script(直接编写):适用于简单流程,示例如下:
pipeline { agent any tools { maven 'Maven 3.8.6' // 需在“Manage Jenkins”→“Global Tool Configuration”中配置Maven jdk 'OpenJDK 11' // 配置JDK } stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/your-repo/project.git' } } stage('Build') { steps { sh 'mvn clean package' // Maven项目构建 // sh './gradlew build' // Gradle项目构建 } } stage('Test') { steps { sh 'mvn test' // 运行单元测试 } } stage('Deploy') { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'linux-server', // 关联的SSH节点名称 verbose: true, transfers: [ sshTransfer( sourceFile: 'target/*.jar', // 构建产物路径(Maven) // sourceFile: 'build/libs/*.jar', // Gradle removePrefix: 'target', // 移除前缀 remoteDirectory: '/opt/app' // 目标服务器部署路径 ) ] ) ] ) // 若需重启服务(如Spring Boot),可添加以下命令: // sshPublisher( // publishers: [ // sshPublisherDesc( // configName: 'linux-server', // verbose: true, // command: 'systemctl restart app.service' // ) // ] // ) } } } post { always { junit 'target/surefire-reports/*.xml' // 发布测试报告 } success { echo 'Deployment succeeded!' } failure { echo 'Deployment failed!' } } } 
 - Pipeline script from SCM(推荐):从代码仓库拉取Pipeline脚本(如
 
6. 触发自动化部署
- 轮询SCM:在Pipeline配置的“Build Triggers”中勾选“Poll SCM”,设置轮询间隔(如
H/5 * * * *表示每5分钟检查一次代码仓库是否有更新)。 - Webhook触发(推荐):在代码仓库(如GitHub)设置Webhook,指向Jenkins服务器的
http://< 服务器IP> :8080/github-webhook/,当代码推送时自动触发构建。 - 手动触发:在Jenkins任务页面点击“Build Now”,手动启动部署流程。
 
7. 验证与调试
- 查看构建日志:在Pipeline任务页面点击“Build History”,选择具体构建记录,查看“Console Output”中的详细日志,定位错误(如代码编译失败、SSH连接问题)。
 - 检查目标服务器:登录Linux服务器,查看
/opt/app目录下是否有最新构建的产物(如.jar文件),确认服务是否重启(如systemctl status app.service)。 
通过以上步骤,可实现Jenkins在Linux环境下的自动化部署流程,覆盖代码拉取、构建、测试、传输及部署全链路。根据项目需求(如Docker容器化、前端项目),可扩展Pipeline脚本(如添加Docker构建步骤、Vue项目npm run build命令)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins如何在Linux上实现自动化部署
本文地址: https://pptw.com/jishu/742126.html
