Jenkins在Linux上如何实现持续部署
导读:1. 环境准备:安装Jenkins与基础工具 在Linux系统(如Ubuntu/CentOS)上,首先需要安装Jenkins及持续部署所需的工具链。 安装Jenkins: Ubuntu/Debian系统:运行sudo apt updat...
1. 环境准备:安装Jenkins与基础工具
在Linux系统(如Ubuntu/CentOS)上,首先需要安装Jenkins及持续部署所需的工具链。
- 安装Jenkins:
- Ubuntu/Debian系统:运行
sudo apt update & & sudo apt install jenkins
,启动服务sudo systemctl start jenkins
并设置开机自启sudo systemctl enable jenkins
。 - CentOS/RHEL系统:可通过YUM仓库或Docker安装(推荐)。YUM方式需先添加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
)。
- Ubuntu/Debian系统:运行
- 安装基础工具:根据项目需求安装Java(
sudo apt install openjdk-11-jdk
)、Maven/Gradle(sudo apt install maven
)、Git(sudo apt install git
)、Docker(sudo yum install docker
并启动服务)等。
2. 配置Jenkins:插件与权限
Jenkins的功能扩展依赖插件,需安装以下核心插件:
- 进入Jenkins Web界面(
http://< 服务器IP> :8080
),完成初始设置(输入管理员密码、设置用户名/密码)。 - 进入“Manage Jenkins”→“Manage Plugins”,安装以下插件:
- Git Plugin:用于从Git仓库拉取代码;
- Pipeline Plugin:支持Pipeline脚本定义流程;
- Docker Plugin:与Docker交互(如构建、推送镜像);
- Deploy to Container Plugin:部署应用到Tomcat、WildFly等容器;
- SSH Agent Plugin:通过SSH连接远程服务器执行部署命令(可选)。
- 配置全局工具:进入“Manage Jenkins”→“Global Tool Configuration”,设置Git路径(如
/usr/bin/git
)、Maven/Gradle安装路径(如/usr/local/maven
),避免每次手动指定。
3. 创建Pipeline Job:定义持续部署流程
Pipeline是Jenkins实现持续部署的核心,通过脚本定义“代码拉取→构建→测试→部署”的全流程。
- 进入Jenkins界面,点击“New Item”,输入Job名称(如
my-app-cd
),选择“Pipeline”,点击“OK”。 - 在Pipeline配置页面,选择“Pipeline script”(或“Pipeline script from SCM”若代码托管在Git),编写Pipeline脚本。以下是一个通用示例:
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”)。
4. 配置触发器:实现自动化构建
为了让Jenkins在代码变更时自动触发部署,需配置触发器:
- 轮询SCM:在Pipeline配置页面的“Build Triggers”部分,勾选“Poll SCM”,设置轮询时间(如
H/5 * * * *
表示每5分钟检查一次Git仓库是否有新提交)。 - Webhook触发(推荐):更实时,需在Git仓库(如GitHub、GitLab)中配置Webhook,指向Jenkins服务器的
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)。
5. 部署到目标环境:常用方式
持续部署的核心是将构建产物(如JAR/WAR包、Docker镜像)推送到目标环境(测试/生产服务器)。常见方式如下:
- Docker部署:通过Pipeline脚本构建Docker镜像,推送到Docker Hub或私有仓库,再通过SSH连接到目标服务器,执行
docker pull
和docker-compose up -d
重启容器(如上述Pipeline示例中的“Deploy to Staging”阶段)。 - 直接部署JAR/WAR包:若项目是Java应用,可通过Pipeline脚本将构建好的JAR/WAR包复制到目标服务器,使用
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' ) ] ) } }
- 容器编排(可选):若使用Kubernetes,可通过Pipeline脚本调用
kubectl apply -f k8s-deployment.yaml
命令,将应用部署到K8s集群。
6. 监控与优化:保障部署稳定性
- 日志与通知:通过Pipeline的
post
section配置构建结果通知(如邮件、Slack消息),收集测试报告(junit
步骤),方便快速定位问题。 - 回滚机制:在Docker部署中,可通过保留旧镜像版本,在部署失败时快速回滚(如
docker-compose pull old-image & & docker-compose up -d
)。 - 性能监控:集成Prometheus、Grafana等工具,监控应用性能指标(如CPU、内存、响应时间),及时预警异常。
通过以上步骤,即可在Linux系统上使用Jenkins实现应用的持续部署,提升开发效率和应用交付速度。需根据实际项目需求调整Pipeline脚本和部署方式(如Spring Boot、Node.js等不同技术栈的构建命令差异)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在Linux上如何实现持续部署
本文地址: https://pptw.com/jishu/726020.html