首页主机资讯如何自定义Ubuntu Jenkins部署脚本

如何自定义Ubuntu Jenkins部署脚本

时间2025-11-04 22:20:04发布访客分类主机资讯浏览1053
导读:自定义Ubuntu Jenkins部署脚本的完整步骤 1. 环境准备 在开始自定义脚本前,需确保Ubuntu服务器已完成Jenkins基础环境配置: 安装Jenkins:通过apt添加Jenkins官方仓库并安装(参考搜索结果中“安装Je...

自定义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自定义部署脚本的配置。根据项目需求调整脚本内容(如添加测试阶段、通知功能),实现灵活的自动化部署流程。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何自定义Ubuntu Jenkins部署脚本
本文地址: https://pptw.com/jishu/742366.html
怎样评估Ubuntu Jenkins部署性能 怎样自动化Ubuntu Jenkins部署任务

游客 回复需填写必要信息