如何自定义Ubuntu Jenkins部署脚本

自定义Ubuntu Jenkins部署脚本的完整步骤1. 环境准备在开始自定义脚本前,需确保Ubuntu服务器已完成Jenkins基础环境配置:安装Jenkins:通过apt添加Jenkins官方仓库并安装(参考搜索结果中“安装Jenkins”部分);安装依赖工具:根据项目需求安装Java(openjdk-11-jdk)、Git、Maven/Node.js、Docker等(如使用Docker

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

1. 环境准备

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

  • 安装Jenkins:通过apt添加Jenkins官方仓库并安装(参考搜索结果中“安装Jenkins”部分);
  • 安装依赖工具:根据项目需求安装Java(openjdk-11-jdk)、Git、Maven/Node.js、Docker等(如使用Docker部署,需授权Jenkins用户操作Docker:sudo usermod -aG docker jenkins);
  • 配置全局工具:进入Jenkins“Manage Jenkins > Global Tool Configuration”,设置JDK、Git、Maven/Node.js的安装路径。

2. 选择任务类型

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

  • Freestyle Project:适合简单脚本,通过“Execute shell”步骤直接运行Shell命令;
  • Pipeline:适合复杂项目,使用Groovy语言定义声明式脚本式流水线,支持阶段(stages)、步骤(steps)、环境变量等特性,推荐用于自定义部署。

3. 配置脚本来源

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

  • Freestyle Project

    1. 进入任务配置页面,找到“Build” section;
    2. 点击“Add build step”,选择“Execute shell”;
    3. 输入自定义Shell脚本(如拉取代码、编译、部署),例如:
      #!/bin/bash
      echo "开始拉取代码..."
      git clone https://github.com/your/repo.git
      cd repo
      echo "编译项目..."
      mvn clean package -DskipTests
      echo "部署到本地服务器..."
      cp target/*.jar /opt/app/
      systemctl restart myapp.service
      
    4. 保存配置。
  • Pipeline

    1. 新建“Pipeline”任务,选择“Pipeline script from SCM”(推荐,便于版本控制);
    2. 配置代码仓库(如Git)地址、分支及凭据;
    3. 在项目根目录创建Jenkinsfile,定义流水线逻辑(示例见下文)。

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 "部署失败,请检查日志!"
        }
    }
}

说明

  • environment:定义全局环境变量(如Docker镜像名称、远程服务器信息);
  • stages:划分构建流程为多个阶段,每个阶段包含具体步骤;
  • script:在Pipeline中嵌入Shell脚本(用于远程部署);
  • post:定义构建完成后的操作(如发送通知)。

5. 配置触发器(可选)

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

  • Poll SCM:在Pipeline配置中添加“Poll SCM”,设置cron表达式(如H/5 * * * *表示每5分钟检查一次代码变更);
  • Webhook:在Git仓库(如GitHub)配置Webhook,指向Jenkins的/project/your-job-name接口,当代码推送时自动触发构建。

6. 测试与调试

  • 手动触发:点击Jenkins任务页面的“Build Now”,查看控制台输出确认脚本执行情况;
  • 日志分析:若构建失败,通过控制台日志定位问题(如权限不足、依赖缺失);
  • 权限调整:若遇到权限问题,给Jenkins用户添加相应权限(如Docker组:sudo usermod -aG docker jenkins)。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1446398.html

(0)
派派
上一篇 2025-11-04
下一篇 2025-11-04

发表回复

登录后才能评论