ubuntu

如何自定义Ubuntu Jenkins部署脚本

小樊
48
2025-11-04 13:10:51
栏目: 智能运维

自定义Ubuntu Jenkins部署脚本的完整步骤

1. 环境准备

在开始自定义脚本前,需确保Ubuntu服务器已完成Jenkins基础环境配置:

2. 选择任务类型

Jenkins支持两种任务类型,根据项目复杂度选择:

3. 配置脚本来源

根据任务类型选择脚本配置方式:

4. 编写自定义脚本

Freestyle Project脚本示例

若项目为Java应用,脚本可包含拉取代码→编译→打包→部署步骤:

#!/bin/bash
# 拉取最新代码
git -C /opt/repo pull origin main || { echo "拉取代码失败"; exit 1; }

# 编译项目
cd /opt/repo
mvn clean package -DskipTests || { echo "编译失败"; exit 1; }

# 备份旧jar包
cp /opt/app/app.jar /opt/app/app_backup_$(date +%Y%m%d).jar || { echo "备份失败"; exit 1; }

# 部署新jar包
cp target/*.jar /opt/app/app.jar

# 重启服务
systemctl restart myapp.service || { echo "重启服务失败"; exit 1; }

echo "部署成功!"

注意:需给脚本添加执行权限(chmod +x /opt/repo/deploy.sh),并在Jenkins中调用该脚本。

Pipeline脚本示例

若项目为Spring Boot+Docker应用,Jenkinsfile可定义代码拉取→构建→Docker镜像→部署流程:

pipeline {
    agent any
    environment {
        DOCKER_IMAGE = "your-dockerhub-username/springboot-app:${BUILD_NUMBER}"
        DOCKER_REGISTRY = "https://registry.hub.docker.com"
        REMOTE_SERVER = "user@deploy-server"
        REMOTE_DIR = "/opt/app"
    }
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main', url: 'https://github.com/your/repo.git'
            }
        }
        stage('Build') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
        stage('Build Docker Image') {
            steps {
                script {
                    docker.build(DOCKER_IMAGE)
                }
            }
        }
        stage('Push to Docker Hub') {
            steps {
                script {
                    docker.withRegistry(DOCKER_REGISTRY, 'dockerhub-credential-id') {
                        dockerImage.push()
                    }
                }
            }
        }
        stage('Deploy to Remote Server') {
            steps {
                script {
                    // 停止旧容器、删除旧镜像、拉取新镜像、启动新容器
                    sh """
                        ssh ${REMOTE_SERVER} "docker stop springboot-app || true"
                        ssh ${REMOTE_SERVER} "docker rm springboot-app || true"
                        ssh ${REMOTE_SERVER} "docker rmi ${DOCKER_IMAGE} || true"
                        ssh ${REMOTE_SERVER} "docker pull ${DOCKER_IMAGE}"
                        ssh ${REMOTE_SERVER} "docker run -d -p 8080:8080 --name springboot-app ${DOCKER_IMAGE}"
                    """
                }
            }
        }
    }
    post {
        success {
            echo "部署成功!"
        }
        failure {
            echo "部署失败,请检查日志!"
        }
    }
}

说明

5. 配置触发器(可选)

实现代码变更自动触发构建:

6. 测试与调试

通过以上步骤,可完成Ubuntu环境下Jenkins自定义部署脚本的配置。根据项目需求调整脚本内容(如添加测试阶段、通知功能),实现灵活的自动化部署流程。

0
看了该问题的人还看了