在Linux服务器(如Ubuntu/CentOS)上实现自动化部署前,需先安装Jenkins及依赖工具:
sudo apt install openjdk-11-jdk -y,CentOS下执行sudo yum install java-11-openjdk-devel -y)。wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -;CentOS:sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo+sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key)。sudo apt update && sudo apt install jenkins -y(Ubuntu)或sudo yum install jenkins -y(CentOS)安装Jenkins。sudo systemctl start jenkins,并设置开机自启sudo systemctl enable jenkins。http://<服务器IP>:8080,输入初始密码(位于/var/lib/jenkins/secrets/initialAdminPassword)完成初始化,安装推荐插件(如Git、Pipeline)。为了让Jenkins能在Linux服务器上执行部署命令,需将服务器添加为Jenkins的节点(Node):
sudo systemctl start sshd(若未安装,执行sudo apt install openssh-server -y/sudo yum install openssh-server -y)。linux-server),选择“Permanent Agent”,点击“OK”。/home/jenkins);ssh-keygen -t rsa,公钥添加到Linux服务器的~/.ssh/authorized_keys中);Pipeline是Jenkins实现自动化部署的核心,通过代码定义流程(推荐使用Jenkinsfile或Web界面编写)。以下是Web界面配置Pipeline的步骤:
my-app-deploy)→选择“Pipeline”→点击“OK”。https://github.com/your-repo/my-app.git),并配置Credentials(若有私有仓库)。Jenkinsfile在仓库中的路径(如根目录则留空)。*/main)。H/5 * * * *表示每5分钟检查代码变更,或“GitHub hook trigger for GITScm polling”配合Webhook实现代码提交自动触发)。Pipeline脚本定义了代码拉取→构建→测试→部署的全流程,以下是常见场景的示例:
pipeline {
agent any
tools {
jdk 'jdk11' // 需提前在Jenkins中配置JDK环境
maven 'maven3' // 需提前在Jenkins中配置Maven环境
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/your-repo/my-app.git'
}
}
stage('Build') {
steps {
sh 'mvn clean package' // 编译项目并打包为war
}
}
stage('Test') {
steps {
sh 'mvn test' // 运行单元测试
}
post {
always {
junit 'target/surefire-reports/*.xml' // 发布测试报告
}
}
}
stage('Deploy') {
steps {
script {
// 将war包复制到Tomcat服务器的webapps目录
scp target/*.war tomcat@your-tomcat-server:/opt/tomcat/webapps/
// 重启Tomcat服务
ssh tomcat@your-tomcat-server 'systemctl restart tomcat'
}
}
}
}
}
pipeline {
agent any
environment {
DOCKER_HUB_CREDENTIALS = credentials('docker-hub-id') // 需提前在Jenkins中配置Docker Hub账号
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/your-repo/my-app.git'
}
}
stage('Build Image') {
steps {
sh 'docker build -t my-app:${BUILD_NUMBER} .' // 构建镜像(需提前编写Dockerfile)
}
}
stage('Push Image') {
steps {
script {
docker.withRegistry('https://registry.hub.docker.com', DOCKER_HUB_CREDENTIALS) {
docker.image("my-app:${BUILD_NUMBER}").push() // 推送镜像到Docker Hub
}
}
}
}
stage('Deploy to Server') {
steps {
script {
// 在目标服务器上拉取最新镜像并重启容器
ssh devops@your-app-server 'docker pull my-app:${BUILD_NUMBER} && docker stop my-app || true && docker rm my-app || true && docker run -d --name my-app -p 8080:8080 my-app:${BUILD_NUMBER}'
}
}
}
}
}
若项目根目录下有Jenkinsfile,可直接在Pipeline配置中选择“Pipeline script”→勾选“Prepare an environment for the run”→指定Jenkinsfile路径(如Jenkinsfile),无需手动编写脚本。
H/5 * * * *)或“GitHub hook trigger for GITScm polling”(需在Git仓库设置Webhook,URL为http://<jenkins-server>/github-webhook/)。H 2 * * *)。cp /opt/tomcat/webapps/my-app.war /opt/tomcat/webapps/my-app-backup.war),失败时可快速回滚到上一版本。通过以上步骤,即可在Linux服务器上使用Jenkins实现自动化部署,覆盖从代码拉取到服务重启的全流程,提升开发与运维效率。