Ubuntu中如何自定义Jenkins构建脚本
导读: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
