You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bamboo Java Specs中获取Git默认分支名?

在Bamboo Java Specs中获取Git默认分支并控制artifactBranch设置

完全可以通过Bamboo Java Specs的API获取Git仓库的默认分支,进而实现“仅当当前分支非默认分支时设置artifactBranch”的逻辑,具体实现如下:

核心实现思路

  1. 获取Git仓库默认分支:通过GitRepository类的getDefaultBranch()方法获取配置的默认分支名;若仓库是Bamboo已配置的存量仓库,也可通过服务器访问工具拉取实际配置值。
  2. 获取当前构建分支:通过环境变量bamboo_repository_branch_name获取当前触发构建的分支。
  3. 分支判断与artifactBranch设置:对比两个分支名,仅当不一致时为任务设置artifactBranch参数。

代码示例

基础硬编码默认分支场景

import com.atlassian.bamboo.specs.api.builders.plan.Plan;
import com.atlassian.bamboo.specs.api.builders.plan.Stage;
import com.atlassian.bamboo.specs.api.builders.plan.job.Job;
import com.atlassian.bamboo.specs.builders.task.ArtifactDownloaderTask;
import com.atlassian.bamboo.specs.builders.repository.git.GitRepository;

public class AutoDeploymentSpec {
    public Plan buildDeploymentPlan() {
        // 定义Git仓库配置
        GitRepository gitRepo = new GitRepository()
                .url("https://your-git-repository-url.git")
                .defaultBranch("main"); // 对应仓库实际默认分支

        // 获取当前构建分支与默认分支
        String currentBranch = System.getenv("bamboo_repository_branch_name");
        String defaultBranch = gitRepo.getDefaultBranch();

        // 初始化制品下载任务
        ArtifactDownloaderTask artifactTask = new ArtifactDownloaderTask();
        // 仅当当前分支非默认分支时设置artifactBranch
        if (currentBranch != null && !currentBranch.equals(defaultBranch)) {
            artifactTask.artifactBranch(currentBranch);
        }

        // 组装部署计划
        return new Plan()
                .name("自动部署计划")
                .key("DEPLOY")
                .stages(new Stage("部署执行阶段")
                        .jobs(new Job("部署任务")
                                .tasks(artifactTask)));
    }
}

从Bamboo服务器获取存量仓库默认分支场景

如果Git仓库已在Bamboo中配置,可通过BambooServerAccessor拉取实际配置的默认分支,避免硬编码:

import com.atlassian.bamboo.specs.util.BambooServerAccessor;
import com.atlassian.bamboo.specs.builders.repository.git.GitRepository;

// 在计划构建逻辑中添加以下代码
BambooServerAccessor bambooAccessor = BambooServerAccessor.create(
        "https://your-bamboo-instance-url",
        "your-username",
        "your-password-or-api-token"
);
// 通过仓库Key获取已配置的Git仓库
GitRepository existingRepo = bambooAccessor.getRepositoryByKey("YOUR_REPO_KEY", GitRepository.class);
String defaultBranch = existingRepo.getDefaultBranch();

注意事项

  • 确保环境变量bamboo_repository_branch_name在构建上下文可用,该变量由Bamboo自动注入。
  • 若分支名存在大小写差异,可根据需求添加equalsIgnoreCase()判断逻辑。

内容的提问来源于stack exchange,提问作者Summy Saurav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:10:28