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

Azure devops VSTS:组织名称的内置变量?,azure-devops,azure-devops-rest-api,Azure Devops,Azure Devops Rest Api,在Azure DevOps REST API文档中描述的许多调用中,我需要提供组织的名称,例如: https://vsrm.dev.azure.com/{organization}/{project}/_api/release/release?api版本=5.0-preview.8 我可以从System.TeamProject获得的项目。我希望组织名称也有类似的含义,比如: System.TeamFoundationCollectionName 这似乎不可用。我甚至在代理上打印出了所有的环境变量

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

https://vsrm.dev.azure.com/{organization}/{project}/_api/release/release?api版本=5.0-preview.8

我可以从System.TeamProject获得的项目。我希望组织名称也有类似的含义,比如:

System.TeamFoundationCollectionName

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


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

尝试使用
System.TeamFoundationServerUri
System.TeamFoundationCollectionUri
来构建API请求。他们将组织包括在其中


编辑:
SYSTEM\u TEAMFOUNDATIONSERVERURI/BUILD\u PROJECTNAME/\u api/release/release?api version=5.0-preview.8
尝试使用
SYSTEM.TEAMFOUNDATIONSERVERURI
SYSTEM.TeamFoundationCollectionUri
生成api请求。他们将组织包括在其中


编辑:
SYSTEM\u TEAMFOUNDATIONSERVERURI/BUILD\u PROJECTNAME/\u api/release/release?api version=5.0-preview.8

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


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

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


https://System.TeamFoundationCollectionName/{project}/_api/release/release?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”是项目名称,因此不需要在那里进行任何解析。它已经可用。

在Powershell中,执行以下操作:

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

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

我在上面发布的API调用中尝试了这两种方法,在这两种情况下都得到了404。看起来我需要上面发布的格式。我之前测试过这个例子,但运气不好,但是如果我有打字错误,我会根据你的建议再尝试一次。与前面(404)的结果相同。
https://{organization}.vsrm.visualstudio.com/{project}/_api/release/releases?api version=5.0-preview.8
不适用于您?直接从我的日志中复制,省略了组织和项目名称:
https://xxx.vsrm.visualstudio.com/yyy/_apis/release/releases?api-version=5.0-preview.8
还验证了动词是post的。我已经在上面发布的API调用中尝试了这两种方法,并且在这两种情况下都得到了404。看起来我需要上面发布的格式。我之前测试过这个例子,但运气不好,但是如果我有打字错误,我会根据你的建议再尝试一次。与前面(404)的结果相同。
https://{organization}.vsrm.visualstudio.com/{project}/_api/release/releases?api version=5.0-preview.8
不适用于您?直接从我的日志中复制,省略了组织和项目名称:
https://xxx.vsrm.visualstudio.com/yyy/_apis/release/releases?api-version=5.0-preview.8
还验证了动词是假定的。该方法太脆弱,因为MS不能保证他们的URL将始终以相同的方式格式化。在几周前,当他们宣布将VST的URL格式更改/重命名为Azure DevOps时,使用这种方法就会开始失败。是的,我同意,但迄今为止给出的任何答案都失败了。这是到目前为止唯一一个在当前情况下能够自动运行的答案。被批准的所谓“答案”不起作用。不幸的是,这种方法太脆弱了,因为MS不能保证他们的URL总是以相同的方式格式化。在几周前,当他们宣布将VST的URL格式更改/重命名为Azure DevOps时,使用这种方法就会开始失败。是的,我同意,但迄今为止给出的任何答案都失败了。这是到目前为止唯一一个在当前情况下能够自动运行的答案。被批准的所谓“答案”不起作用。