如何在Azure DevOps中使用斜杠获取分支名称?

Azure Devops提供了两个变量,其中包含有关当前git分支名称的信息:$(Build.SourceBranchName)$(Build.SourceBranch)

虽然SourceBranch包含对分支的完整引用,但SourceBranchName应该仅包含分支的简称。

不幸的是,当分支名称包含斜杠(/时,此行为有点意外

+---------------------------------------------------------------------------------------------------------+
| Situation                     | Git branch name  | Build.SourceBranch          | Build.SourceBranchName |
|---------------------------------------------------------------------------------------------------------|
| branch name contains no slash | mybranch         | refs/heads/mybranch         | mybranch               |
| branch name contains slash    | release/mybranch | refs/heads/release/mybranch | mybranch               |
+---------------------------------------------------------------------------------------------------------+

斜杠之前的分支名称部分不被视为分支名称的一部分。我的同事指出,这是Azure Devops记录行为

Git回购分支或请求请求:引用中的最后一个路径段。例如,在refs / heads / master中,此值为master。在refs / heads / feature / tools中,此值为工具。

我不确定这种行为是否特别有用:我想检出分支,并需要分支名称包含斜杠。另外,如果将斜线之前的部分去掉,则实际路径可能会混乱,因为名称可能会含糊。

我需要包含斜杠的分支名称有没有简单的方法可以得到它?为了安全起见,我是否总是需要使用完整的引用?

帕特里克·卢

建立PR时,可以使用System.PullRequest.SourceBranchSystem.PullRequest.TargetBranch变量。

System.PullRequest.TargetBranch

作为拉取请求目标的分支。例如:refs/heads/master仅当构建由于分支策略影响的Git PR而运行时,才初始化此变量。

使用预定义的构建变量

此外,如果要使用完整路径或短路径,也可以根据需要定义自己的变量。

只需创建一个bash脚本,即可将较短的分支名称分配给变量。

# Bash script
BRANCH_NAME=$(echo "$(System.PullRequest.TargetBranch)" | awk -F/ '{print $NF}')
echo "##vso[task.setvariable variable=PullRequest_Target_Branch;]$BRANCH_NAME"

然后,您可以稍后在管道中引用$(PullRequest_Target_Branch)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Azure DevOps api 从标记中获取分支名称

获取 Azure Devops Pipeline 中分支的名称

如何在Azure DevOps中更改分支名称

如何在 Azure 构建验证中获取源分支名称

使用Azure DevOps REST Api如何获取分支的提交哈希?

使用 Azure DevOps REST Api 如何获取默认分支?

如何在触发的管道中使用以前的Azure DevOps yaml管道名称?

如何在 Azure DevOps 管道中使用复杂变量

如何在Azure DevOps中使用SharePointPnpPowerShellOnline PowerShell模块?

如何在 Azure DevOps 工件的轮子版本号中包含分支名称?

如何在Azure DevOps中为分支名称设置默认模板

如何在 azure devops 管道中使用来自 azure devops 存储库的共享文件

如何在Azure Devops中设置默认分支策略

如何在 Azure DevOps 环境分支控制中允许标记

如何在Azure DevOps Yaml中设置默认分支?

如何在日志中获取分支名称?

如何在GitHub上获取分支名称?

在Git分支名称中使用斜杠字符

如何在Azure中使用新中继

如何在Azure CLI中使用变量

如何在Azure Pipelines中使用Bazel?

如何在Azure的CosmosDB中使用Django?

如何在Azure Databricks中使用EventHubsForeachWriter

如何在Kibana Discovery中使用斜杠('/')?

如何在 sed 中使用反斜杠?

如何在Azure DevOps中指定工件版本名称?

如何在 Azure 函数中使用 Azure 资源健康 API?

JQuery:如何在类名称中使用小数获取文本?

如何在Liferay中使用“角色名称”获取RoleId?