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

VSTS: Built in variable for organization name?

在 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 的格式。

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

尝试使用 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

目前看来 organization 没有这样的变量,另外,变量 return 旧的 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.

在 Powershell 中,执行此操作:

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

现在,只需将其分配给一个变量并在您喜欢的任何地方使用它。 "SYSTEM_TEAMPROJECT" 是项目名称,所以不需要在那里做任何解析。它已经可用。