首页主机资讯Ubuntu中如何自定义Jenkins构建脚本

Ubuntu中如何自定义Jenkins构建脚本

时间2025-11-21 18:18:04发布访客分类主机资讯浏览562
导读:Ubuntu中自定义Jenkins构建脚本实操指南 一 准备环境 安装 Java 11(Jenkins 2.x 常用版本): 命令:sudo apt update && sudo apt install -y openj...

Ubuntu中自定义Jenkins构建脚本实操指南

一 准备环境

  • 安装 Java 11(Jenkins 2.x 常用版本):
    • 命令:sudo apt update & & sudo apt install -y openjdk-11-jdk
  • 安装 Jenkins(Ubuntu 20.04/22.04 示例):
    • 命令:
      wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
      sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ >
           /etc/apt/sources.list.d/jenkins.list'
      sudo apt update &
          &
           sudo apt install -y jenkins
      sudo systemctl start jenkins &
          &
           sudo systemctl enable jenkins
      
  • 访问 http://< 服务器IP> :8080 完成初始化(解锁、安装建议插件、创建管理员)。
  • 建议安装的插件:Git plugin、Pipeline、JUnit、HTML Publisher(用于拉取代码、流水线、测试报告与HTML报告展示)。

二 方式一 Pipeline 项目自定义脚本

  • 在代码仓库根目录创建 Jenkinsfile(推荐纳入版本控制):
    pipeline {
    
      agent any
    
      environment {
    
        APP_NAME = 'myapp'
        WORKSPACE_DIR = "/var/lib/jenkins/workspace/${
    env.JOB_NAME}
    "
      }
    
    
      stages {
    
        stage('Checkout') {
    
          steps {
    
            git branch: 'main', url: 'git@github.com:your-org/your-repo.git'
          }
    
        }
    
    
        stage('Build') {
    
          steps {
    
            sh '''
              chmod +x ./build.sh
              ./build.sh
            '''
          }
    
        }
    
    
        stage('Test') {
    
          steps {
    
            sh './test.sh'
          }
    
          post {
    
            always {
    
              junit '**/target/surefire-reports/*.xml'
              publishHTML(target: [
                reportDir: 'target/site/jacoco',
                reportFiles: 'index.html',
                reportName: 'Coverage Report'
              ])
            }
    
          }
    
        }
    
    
        stage('Deploy') {
    
          steps {
    
            sh './deploy.sh'
          }
    
        }
    
      }
    
    
      post {
    
        success {
    
          echo 'Build and deploy succeeded.'
        }
    
        failure {
    
          echo 'Build or deploy failed.'
        }
    
      }
    
    }
    
    
  • 在 Jenkins 中新建 Pipeline 任务,选择 Pipeline script from SCM,指定仓库 URL、凭证与 Jenkinsfile 路径(默认为根目录的 Jenkinsfile),保存并构建。

三 方式二 Freestyle 项目自定义脚本

  • 新建 Freestyle project,在 源码管理 选择 Git 并配置仓库与分支。
  • 构建 部分点击 Add build step → Execute shell,填入自定义命令或脚本:
    #!/usr/bin/env bash
    set -euo pipefail
    
    echo "=== Build ==="
    chmod +x ./build.sh
    ./build.sh
    
    echo "=== Test ==="
    ./test.sh
    
    echo "=== Deploy ==="
    ./deploy.sh
    
  • 构建后操作 可按需添加:归档成品(如 .jar/.zip)、发布 JUnit/HTML 报告、邮件通知等。

四 常见场景脚本模板

  • 远程发布静态站点到多台 Nginx 服务器(免密 SSH)
    • 前置:在 Jenkins 节点生成密钥并把公钥分发到目标服务器(如 10.0.0.13/14)的 ~/.ssh/authorized_keys
    • 脚本 deploy.sh:
      #!/usr/bin/env bash
      set -euo pipefail
      
      HOSTS=(10.0.0.13 10.0.0.14)
      APP=myweb
      APP_PATH=/var/www/html
      
      download() {
      
        rm -rf "$APP"
        git clone git@your-gitlab.com:dev/"$APP".git
      }
      
      
      deploy() {
      
        for h in "${
      HOSTS[@]}
          ";
       do
          rsync -avz --delete "$APP"/ "$h:$APP_PATH"/
        done
      }
          
      
      download
      deploy
      
    • 在 Jenkins 中通过 Execute shell 调用:chmod +x deploy.sh & & ./deploy.sh
  • 构建并后台启动 Java JAR(避免被构建进程终止)
    #!/usr/bin/env bash
    set -euo pipefail
    
    BUILD_ID=DONTKILLME   # 防止 Jenkins 杀掉子进程
    
    cd "$WORKSPACE"
    ./mvnw clean package -DskipTests
    
    PID=$(ps -aux | grep demo1 | grep -v grep | awk '{
    print $2}
        ')
    if [ -n "$PID" ];
         then
      kill -9 "$PID" || true
    fi
    
    nohup java -jar target/demo1-0.0.1-SNAPSHOT.jar \
      -Xmx512m -Xms512m -Xss4m >
         app.log 2>
        &
        1 &
    
    
    NEW_PID=$(ps -aux | grep demo1 | grep -v grep | awk '{
    print $2}
        ')
    if [ -z "$NEW_PID" ];
         then
      echo "启动失败"
      exit 1
    else
      echo "启动成功,PID=$NEW_PID"
    fi
    
    • 说明:BUILD_ID=DONTKILLME 常用于避免 Jenkins 在构建结束后终止由脚本启动的后台进程。

五 权限与安全建议

  • 为脚本添加可执行权限:chmod +x your_script.sh;在 Jenkinsfile/Freestyle 中先执行权限设置再运行脚本更稳妥。
  • 使用 Jenkins 凭据 管理 SSH 私钥/Git 凭据,避免明文写在脚本中。
  • 涉及 Docker 操作时,确保 Jenkins 用户加入 docker 组或使用合适的 sudo 策略,避免因权限不足导致构建失败。
  • 远程发布建议优先使用 SSH 免密登录 或受控的 部署密钥,并在脚本中做好错误检查与回滚逻辑。

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


若转载请注明出处: Ubuntu中如何自定义Jenkins构建脚本
本文地址: https://pptw.com/jishu/753528.html
cximage在Linux支持哪些格式 dhclient在Linux网络配置中的作用是什么

游客 回复需填写必要信息