【问题标题】:TFS2018 get build definition modified dateTFS2018 获取构建定义修改日期
【发布时间】:2018-05-02 16:40:54
【问题描述】:

我正在使用 TFS2018 API 来获取所有构建定义。我想知道上次更改构建定义的时间(以及是否更改了构建步骤)。

为了更好地解释这一点。我正在使用 API 批量更新构建定义,例如100个基于模板的构建定义。如果我更改模板,我将删除所有定义并基于模板创建一个新定义。但是,如果使用 web 管理页面手动更改特定的构建模板,我不想删除它,因为它已被自定义。

我假设修订版仅在构建期间创建。但是用户可能会更改构建定义而不构建它。

因此,我希望每当构建定义中的某些内容发生更改时都会有一个修改日期?

更新:调用修订版 REST API 时,我总是得到相同的响应,一个空数组 "{\"count\":0,\"value\":[]}" "https://mytfsdomain/tfs/DefaultCollection/MyTeamProject/_apis/build/definitions/7332/revisions?api-version=2.0"

即使我更改了构建定义 7332,我仍然会得到相同的响应。知道为什么没有修订吗?

【问题讨论】:

    标签: tfs azure-devops


    【解决方案1】:

    api-version=4.1 用于 VSTS。由于您使用的是 TFS 2018,因此您需要使用api-version=4.0

    Get http://TFS2018:8080/tfs/DefaultCollection/TeamProject/_apis/build/definitions/{definitionId}/revisions?api-version=4.0
    

    我也试过api-version=2.0,效果也不错。检查下面的屏幕截图:

    此外,您可以在编辑构建定义时检查历史选项卡,您也可以在那里更改日期:

    【讨论】:

      【解决方案2】:

      这需要使用revisions API 进行几次 REST 调用:

      GET https://{url}/{project}/_apis/build/definitions/{definitionId}/revisions?api-version=4.1

      版本号是检索构建定义时的可选参数之一,因此您可以检索构建定义的特定版本并与最新版本进行比较。

      【讨论】:

      • 嗨@DanielMann 感谢您的回复我更新了我的问题以更好地解释我想要实现的目标。
      • @doorman 您的更新没有改变答案的有效性。您可以从修订 API 获取修订。每次您更改构建定义时,无论是通过 REST API 还是通过单击构建编辑器中的“保存”按钮,都会创建一个新修订版。
      • 嗨@DanielMann 谢谢,但是即使我更新了构建定义,我也没有得到任何修订。我只得到一个空数组。我实际上使用的是 API 2.0 版,这有关系吗?我更新了我的问题。
      【解决方案3】:

      是的,您需要查询definition revisions。返回的 JSON 包含更改的详细信息。根据您用于解析输出的内容,获取value 数组的最后一个元素,然后获取changedDate 字段。我也相信返回的值是 UTC。下面是一些可以帮助您的 PowerShell。

      $pat = "[Your PAT]"
      $vstsServiceCredentials = ":$pat"
      
      $encodedVstsServiceCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($vstsServiceCredentials))
      $authorizationHeader = @{ Authorization=("Basic {0}" -f 
      $encodedVstsServiceCredentials) }
      
      $buildService = "https://[accountName].visualstudio.com/[projectName]/_apis/build/definitions/[BuildDefinitionId]/revisions?api-version=4.1"
      $response = Invoke-RestMethod -Uri $buildService -Method Get -Headers 
      $authorizationHeader
      
      Write-Host $response
      Write-Host $response.value[$response.value.Length - 1].changedDate
      

      【讨论】:

      • 嗨@virusstorm 感谢您的回复我更新了我的问题以更好地解释我想要实现的目标。
      猜你喜欢
      • 2016-12-09
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多