在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的格式。
我也无法对组织名称进行硬编码,因为此版本定义将存在于多个组织中,我们不想为每个组织手动进行更新。别人如何解决这个问题?
答案 0 :(得分:2)
尝试使用System.TeamFoundationServerUri
和System.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”是项目名称,因此无需在那里进行任何解析。它已经可用。