如何在Debian上配置Jenkins多分支构建
导读:在 Debian 上配置 Jenkins 多分支构建 一 环境准备与安装 安装 Java 11(Jenkins 官方推荐 LTS 搭配 JDK 11): 执行:sudo apt update && sudo apt in...
在 Debian 上配置 Jenkins 多分支构建
一 环境准备与安装
- 安装 Java 11(Jenkins 官方推荐 LTS 搭配 JDK 11):
- 执行:
sudo apt update & & sudo apt install -y openjdk-11-jdk
- 执行:
- 添加 Jenkins 官方仓库 并安装:
- 执行:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null sudo apt update & & sudo apt install -y jenkins
- 执行:
- 启动并设置开机自启:
- 执行:
sudo systemctl enable --now jenkins
- 执行:
- 解锁与初始化:
- 访问:
http://< 服务器IP> :8080 - 初始管理员密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword - 按向导完成插件安装与管理员创建。
- 访问:
二 安装必要插件
- 在 Manage Jenkins → Manage Plugins 安装:
- Pipeline(流水线核心)
- Branch API(分支 API)
- Git plugin 与 GitHub Integration(或 GitLab 插件)
- Pipeline: Multibranch(多分支流水线)
- 可选:Blue Ocean(可视化流水线)
- 可选(按场景):Docker Pipeline、Publish Over SSH(构建后发布/部署)
三 创建多分支流水线
- 新建任务:选择 Multibranch Pipeline
- 配置源码管理:
- 选择 Git,填写仓库 URL 与 Credentials(建议使用 SSH 或 Personal Access Token)
- 指定 Jenkinsfile 路径(默认为根目录的 Jenkinsfile)
- 分支发现与扫描:
- 选择分支发现策略(如 Discover all branches)
- 可设置 构建配置规则(按分支名过滤,如只构建 main/develop 或 feature/)
- 触发器(推荐即时触发):
- 勾选 Scan by webhook trigger(安装 Multibranch Scan Webhook Trigger 插件后可见),后续在代码托管平台配置 Webhook 即可按需触发扫描与构建
- 保存后执行首次扫描,Jenkins 会为每个包含 Jenkinsfile 的分支自动创建子任务。
四 配置 Webhook 实现即时构建
- 方式一(推荐):使用 Multibranch Scan Webhook Trigger
- 在 Multibranch 项目配置中启用 Scan Multibranch Pipeline Triggers,生成 Webhook 调用地址(形如:
https://< IP> /multibranch-webhook-trigger/invoke?token=< TOKEN>) - 在 GitHub/Gitee/GitLab 项目 Webhook 中配置该 URL 与可选 token,事件选择 Push events / Pull Request events
- 推送代码或创建 PR 时将自动触发对应分支的扫描与构建
- 在 Multibranch 项目配置中启用 Scan Multibranch Pipeline Triggers,生成 Webhook 调用地址(形如:
- 方式二:使用 Generic Webhook Trigger(更灵活)
- 在 Jenkinsfile 的
triggers中声明:triggers { GenericTrigger( causeString: 'Triggered by $ref', genericVariables: [[key: 'ref', value: '$.ref']], regexpFilterExpression: '^refs/heads/(main|develop|release/.*)$', regexpFilterText: '$ref', token: 'mytoken' ) } - 托管平台 Webhook 指向:
https://< IP> /generic-webhook-trigger/invoke?token=mytoken - 注意:首次把
triggers写入 Jenkinsfile 后,需触发一次变更使 Jenkins 拉取新配置,之后即可按规则触发。
- 在 Jenkinsfile 的
五 示例 Jenkinsfile 与常见问题
- 示例 Jenkinsfile(按分支执行不同部署策略)
pipeline { agent any parameters { booleanParam(name: 'DEPLOY_TO_PROD', defaultValue: false, description: 'Deploy to production?') } environment { ARTIFACT = 'target/app.jar' } stages { stage('Checkout') { steps { checkout scm } } stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } stage('Deploy to Test') { when { expression { !params.DEPLOY_TO_PROD } } steps { sh './deploy.sh test' } } stage('Deploy to Prod') { when { expression { params.DEPLOY_TO_PROD } } steps { input '确认部署到生产环境?' sh './deploy.sh prod' } } } post { success { echo 'Build and deploy succeeded.' } failure { echo 'Build or deploy failed.' } } } - 常见问题与排查
- 分支未被发现:确认分支根目录存在 Jenkinsfile,分支过滤规则未排除该分支
- Webhook 未触发:检查托管平台 Payload URL、Content type、Secret/Token 与网络连通性(必要时放行 8080/50000 端口)
- 首次添加
triggers未触发:提交一次变更以让 Jenkins 拉取新 Jenkinsfile - 权限问题:确保 Jenkins 用户对工作空间与部署目标具备读写/执行权限
- 构建后进程被杀死:在启动脚本前设置环境变量
export BUILD_ID=dontKillMe(适用于后台常驻进程场景)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Debian上配置Jenkins多分支构建
本文地址: https://pptw.com/jishu/771882.html
