Ubuntu 上自定义 Jenkins 构建的实用指南
一 环境准备与基础配置
- 安装 Java(Jenkins 依赖):sudo apt update && sudo apt install -y openjdk-11-jdk;验证:java -version。
- 安装 Jenkins:
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(用于拉取代码、流水线编排与测试报告)。
二 两种常用自定义方式
- 方式 A Freestyle 项目(适合简单任务)
- 新建任务:New Item → 输入名称 → 选择 Freestyle project → OK。
- 源码管理:选择 Git,填写仓库 URL 与分支(如 main/master),配置凭据。
- 构建触发器:按需选择 GitHub hook trigger for GITScm polling、Poll SCM(如 H/5 * * * * 每 5 分钟检查一次),或 GitLab webhook。
- 构建步骤:Add build step → Execute shell,填入你的命令,例如:
sudo apt-get update && sudo apt-get install -y build-essential
mvn clean package
- 构建后操作:可添加 Archive the artifacts、Publish JUnit test result report、E-mail Notification 等。
- 保存并运行:Save → Build Now,在 Console Output 查看日志。
- 方式 B Pipeline 项目(推荐,可维护性强)
- 在代码库根目录创建 Jenkinsfile,用 Groovy 定义 stages 与 steps:
pipeline {
agent any
stages {
stage(‘Build’) { steps { sh ‘./build.sh’ } }
stage(‘Test’) { steps { sh ‘./test.sh’ } }
stage(‘Deploy’) { steps { sh ‘./deploy.sh’ } }
}
}
- 新建任务:New Item → 选择 Pipeline → 在配置中选择 Pipeline script from SCM → 选 Git 并填写仓库与分支,指定 Jenkinsfile 路径(默认为根目录的 Jenkinsfile)。
- 保存并运行:自动拉取并执行流水线。
三 常见自定义场景与配置要点
- 多分支流水线:安装 Multibranch Pipeline 插件,按分支自动发现并创建任务,适合 main/dev/feature/ 多分支开发。
- 触发策略:
- 代码推送触发:GitHub 使用 GitHub hook,GitLab 使用 GitLab webhook;
- 轮询构建:在 Poll SCM 填写日程表达式(如 **H/5 * * * *** 表示每 5 分钟检查一次变更)。
- 构建环境:在 Job 配置中指定 JDK 版本 或 工具位置,确保 mvn/gradle/node 等命令可用。
- 构建参数:勾选 This project is parameterized,添加 String/Choice/Boolean 等参数,在脚本中通过 params.<参数名> 使用,便于复用同一任务执行不同目标(如不同 profile、部署环境)。
- 构建后处理:归档产物(如 target/*.jar)、发布 JUnit/HTML 报告、条件失败通知(邮件/企业微信/钉钉)。
四 安全与排错建议
- 权限最小化:Jenkins 执行脚本时默认以 jenkins 用户运行,避免使用 sudo;如确需特权操作,配置 sudoers 免密仅限于必要命令,或使用 SSH 免密 到目标主机执行。
- 凭据管理:在 Manage Jenkins → Manage Credentials 中统一保存 Git 凭据、服务器 SSH 密钥、API Token,在 Job 中引用,避免明文写在脚本。
- 工具链与路径:在 Global Tool Configuration 配置 JDK/Maven/Gradle/NodeJS 安装;在脚本中使用绝对路径或加载工具模块,减少环境差异导致的问题。
- 日志与诊断:构建失败优先查看 Console Output;必要时在关键阶段前后增加 echo 或 pwd/ls 输出,确认工作空间与文件权限。
- 资源与并发:为构建节点配置合适的 执行器数量 与 磁盘/内存,避免因资源争用导致不稳定。