我有一个CI构建定义(TFS 2013),它由几个分支的提交触发(它是一个git存储库)。我想在构建过程中使用分支名称将结果复制到正确的位置。我怎么能这样做?
答案 0 :(得分:3)
制作您自己的CodeActivity,就像这样...
您需要IBuildDetail BuildDetail作为InArgument。
string branch = null;
string commit;
var environmentVariable = BuildDetail.Get(context);
if (environmentVariable != null && !BuildSourceVersion.TryParseGit(environmentVariable.SourceGetVersion, out branch, out commit))
{
var defaultSourceProvider = environmentVariable.BuildDefinition.GetDefaultSourceProvider();
if (BuildSourceProviders.IsGit(defaultSourceProvider.Name))
{
branch = BuildSourceProviders.GetProperty(defaultSourceProvider.Fields, BuildSourceProviders.GitProperties.DefaultBranch);
}
}
if (string.IsNullOrEmpty(branch))
{
throw new Exception("Could not find Branch");
}
Branch.Set(context, branch.Substring(branch.LastIndexOf("/", StringComparison.InvariantCultureIgnoreCase) + 1));
答案 1 :(得分:1)
在构建期间可以访问整个.git
文件夹,因此我可以使用PowerShell查看文件.git/HEAD
。可能只有提交哈希(分离的HEAD制度),然后需要一些更多的git调用来找出我真正的位置。总而言之,另一个答案可能更清晰。