VSTS:组织名称的内置变量?

时间:2018-09-24 15:26:36

标签: azure-devops azure-devops-rest-api

在Azure DevOps REST API文档中描述的许多调用中,我需要提供组织的名称,例如:

https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=5.0-preview.8

我可以从System.TeamProject获得的项目。我本来希望组织名称类似,例如:

System.TeamFoundationCollectionName

这似乎不可用。我什至在代理上打印了所有环境变量,但看不到任何完全符合需要的内容。当然,我可以从其他值之一中解析它,但这似乎很脆弱,因为MS似乎想更改URL的格式。

我也无法对组织名称进行硬编码,因为此版本定义将存在于多个组织中,我们不想为每个组织手动进行更新。别人如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

尝试使用System.TeamFoundationServerUriSystem.TeamFoundationCollectionUri建立API请求。他们有其中的组织。

https://docs.microsoft.com/en-us/azure/devops/pipelines/release/variables?view=vsts&tabs=batch

编辑:SYSTEM_TEAMFOUNDATIONSERVERURI/BUILD_PROJECTNAME/_apis/release/releases?api-version=5.0-preview.8

答案 1 :(得分:0)

看来organization目前没有这样的变量,而且,这些变量返回旧的URL(xxx.visualstudio.com)而不是新的URL(dev.azure.com/xxx),因此如果您使用System.TeamFoundationCollectionName,API应该可以在没有{organization}的情况下工作:

https://System.TeamFoundationCollectionName/{project}/_apis/release/releases?api-version=5.0-preview.8

答案 2 :(得分:0)

在Powershell中,执行以下操作:

# Where SYSTEM_TEAMFOUNDATIONCOLLECTIONURI=https://some_org_name.visualstudio.com/    
([System.Uri]$Env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI).Host.split('.')[-3] # returns 'some_org_name'

现在,只需将其分配给变量并在您喜欢的任何地方使用它。 “ SYSTEM_TEAMPROJECT”是项目名称,因此无需在那里进行任何解析。它已经可用。