3

想象一下:

你有一个 Azure DevOps 2019 服务器和一个 XAML 生成定义。

您将一些签入排队到构建定义中。第一个正在办理登机手续,其余正在排队等候。

使用 REST API 如何获得排队构建的搁置集?

很容易获得与 InProgress 构建关联的搁置集,因为存在 BuildID。我使用它来获取有关使用 API 构建的更多详细信息,例如:“Builds/33217/Details”。从那里,我可以去搁置。

如果构建已排队(或未启动),则构建详细信息 API 将返回:

{
"value": [],
"count": 0
}

...因此我无法获得搁置。

我的印象是升级到 DevOps 2019 会修改 API,因此人们也可以轻松地从 XAML 构建定义中获取排队的搁置集。但是,我不确定我在这里缺少什么。我应该使用其他 API 吗?

4

1 回答 1

1

简短的回答参考微软 积压/不存在/选项中没有简单的方法解释1,但我使用了选项2和选项3,我希望这对你有帮助,我努力了一点!

  1. 根本问题是您从 1) 查询Bottom to Top in DevOps build Hierarchy/Object Model,并且您需要 2) Associate the shelveSets versioned changeSet& 然后到构建。

2. TLDR,我只是按照practice of prefixing/Tags我的shelveSets允许我自定义查询选项中列出的构建3。这让我可以在 REST API 查询中很好地简化它tagFilters={tagFilters},例如ShelveSetBuildTag-....

 // now modify you REST API filter `ShelveSetBuildTag-....` 
 GET https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitions}&queues={queues}&buildNumber={buildNumber}
  &tagFilters={tagFilters}&buildIds={buildIds}&repositoryId={repositoryId}&repositoryType={repositoryType}&api-version=6.0

选项 1:没有示例,MS 构建文档对我来说很清楚,并且没有帮助,但它尽可能列出,我放弃并采取了不同的路线,如下.. Azure Devops 搁置集 RESTAPI


选项 2:

因为shelveSets 是未版本化的Azure DevOpschangeSets根据其ER/DB 设计使用版本化,I had to get the associated shelveSets via ChangeSets/or WorkItems in a build.

首先,我发现一篇很好的文章可以帮助我理解两个关键项目之间的关系和区别,以及Azure DevOpschangeSetshelveSet构建的关系。这changeSet将允许您找到相关 shelvesets的构建、查询和获取DimChangeset,我怀疑您必须通过几个步骤来完成此操作。

FactBuildChangeset下图与以下维度表相关:

  • DimBuild
  • 昏暗的变更集
  • 昏暗的人
  • 昏暗的团队项目

图片显示 Azure Devops ER Changeset 与 Build Per MSDN 有关系

恕我直言版本控制允许您获得您的changeset associated with a build,然后您可以获得进入该变更集的搁置集


第 1 步:获取ShelveSet 的 changetSets

获取https://dev.azure.com/fabrikam/_apis/tfvc/shelvesets/changes?shelvesetId=我的第一个搁置集;d6245f20-2af8-44f4-9451-8107cb2767db&api-version=6.0

第 2 步:获取

获取构建中的更改 https://{instance}/DefaultCollection/{project}/_apis/build/builds/{buildId}/changes?api-version={version}

第 3 步:我manually join的中间件中的响应


选项 3:

关注practice of tagging你的shelveSets

然后,您使用标签文件管理器进行查询:tagFilters={tagFilters}在您的构建查询中

使用您的搁置集中的标签并从您的构建列表中过滤tagFilters={tagFilters},当然这假设您设置了标签

// ``tagFilters={tagFilters}``for your shelveset assuming you set those up
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitions}&queues={queues}&buildNumber={buildNumber}&minTime={minTime}&maxTime={maxTime}&requestedFor={requestedFor}&reasonFilter={reasonFilter}&statusFilter={statusFilter}&resultFilter={resultFilter}&tagFilters={tagFilters}&properties={properties}&$top={$top}&continuationToken={continuationToken}&maxBuildsPerDefinition={maxBuildsPerDefinition}&deletedFilter={deletedFilter}&queryOrder={queryOrder}&branchName={branchName}&buildIds={buildIds}&repositoryId={repositoryId}&repositoryType={repositoryType}&api-version=6.0
于 2021-06-27T19:24:56.397 回答