Jenkins多分支指定分支触发部署

文章讨论了在GitLab中如何使用正则表达式匹配不同分支(如5.X和dev),同时考虑项目区分(通过分支后缀和http或sshURL)。作者增加了新的filter规则以适应特定的项目名和URL格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多分支正则匹配,增加项目名 分支两个参数

ref
$.ref

project.web_url
$.project.web_url

在这里插入图片描述

可以上gitlab看一下上一次构建的参数

在这里插入图片描述
在这里插入图片描述
只需要需改/heads后面的分支,项目参数是为了防止多个项目同一个分支名,如果是ssh就用git_ssh_url,http就用web_url

匹配多个待测试不知道正则写的对不对:refs/heads/^(5.X|dev)$

增加filter

^(refs/heads/5.X)_(http://IP:PORT/zsp/lj-Map)$
$ref_$project.web_url

在这里插入图片描述

### Jenkins部署多分支Maven项目的具体步骤 #### 创建一个多分支Pipeline项目 为了处理多个分支,在Jenkins中应创建一个多分支Pipeline项目。这允许自动发现、管理和构建不同Git仓库中的各个分支。 通过访问Jenkins工作台页面,点击左侧菜单栏的新建任务按钮来新建一个项目[^2]。选择“Multibranch Pipeline”,输入合适的名称后确认创建。 #### 配置源码管理 进入新建立的任务配置界面下,“Branch Sources”部分添加Git作为SCM(Source Code Management),填入目标仓库URL地址,并设置凭证用于认证获取代码库权限[^1]。如果使用的是私有仓库,则需提前配置好SSH密钥或OAuth令牌等验证方式。 对于希望仅针对特定模式的分支触发构建的情况,可以在高级选项里定义分支过滤器规则;比如只对`feature/*`或者`release/*`这样的命名约定下的分支生效。 #### 设置行为策略与扫描周期 继续向下滚动到“Behaviors”区域,这里可以增加额外的行为特性支持更复杂的场景需求: - **Discover branches**: 默认会识别所有的远程分支。 - **Filter by name (with regular expression)**: 可利用正则表达式进一步限定感兴趣的分支范围。 - **Suppress automatic SCM triggering on pull request creation from a forked repository**: 对于来自分叉存储库的拉取请求,默认情况下不会立即触发新的构建作业。 另外,还需设定定期轮询间隔时间或是采用Webhook机制让GitLab通知Jenkins何时应该重新评估分支状态并启动相应版本的编译流程[^3]。 #### 编写Jenkinsfile实现自动化过程 在每一个参与持续集成/交付(CI/CD)管道的分支根目录放置名为`Jenkinsfile`的文字文件,它描述了整个流水线的具体操作逻辑。下面给出一段简单的Groovy语法样例供参考: ```groovy pipeline { agent any environment { // 环境变量声明区 MAVEN_HOME = '/usr/local/maven' JAVA_HOME = '/usr/lib/jvm/java-8-openjdk-amd64/' } stages { stage('Checkout') { steps { git branch: '*/${env.BRANCH_NAME}', url: 'https://github.com/user/repo.git' } } stage('Build') { steps { sh "${MAVEN_HOME}/bin/mvn clean package" } } stage('Test') { parallel [ unitTests : { sh "echo Running Unit Tests..." sh "${MAVEN_HOME}/bin/mvn test -Dgroups=unit" }, integrationTests : { sh "echo Running Integration Tests..." sh "${MAVEN_HOME}/bin/mvn verify -DskipUTs=true" } ] } stage('Deploy') { when { expression { return env.BRANCH_NAME ==~ /^(master|main)$/ } // 仅当处于主干时才执行此阶段 } steps { script { def destDir = "/path/to/deploy/${env.JOB_NAME}-${BUILD_NUMBER}" dir ('target'){ sh """ mkdir -p ${destDir} cp *.jar ${destDir}/application.jar cd ${destDir} && nohup java -jar application.jar & """ } } } } } post { // 构建完成后的动作集合 always { archiveArtifacts artifacts: '**/*.jar', allowEmptyArchive: true junit '**/surefire-reports/**/*.xml' } success { mail to: '[email protected]', subject: "[SUCCESS] Build #${currentBuild.number}", body: "The build was successful!" } failure { mail to: '[email protected]', subject: "[FAILURE] Build #${currentBuild.number}", body: "There were errors during the build process." } } } ``` 上述脚本实现了从检出代码、编译打包直至测试再到有条件发布的全过程控制。其中特别注意到了根据不同环境调整使用的工具链位置(`JAVA_HOME`, `MAVEN_HOME`)的重要性。同时,还加入了邮件告警功能以便及时反馈给相关人员当前构建的状态变化情况。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值