首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TFS Release -获取给定环境的可用版本列表

TFS Release -获取给定环境的可用版本列表
EN

Stack Overflow用户
提问于 2021-11-09 02:43:55
回答 1查看 29关注 0票数 0

我正在尝试在prem上的TFS 2017/2018上使用TFS发布管理。

每次创建工件时,我都会创建版本。我还可以在几个环境中部署版本。每当我们有新的工件时,QA-1环境都会更新(一天可以更新几次)。QA-2环境应该每天更新一次。

如何获取可部署到QA-2环境的版本列表?

如果我已经在一夜之间部署了Release-20。当天,我们创建了Release-21、22、23 (全部部署到QA-1)。有没有办法使用API告诉QA-2环境有21、22、23可用?

我试过了,但它显示了已经部署的内容:

代码语言:javascript
复制
https://<server>/<project>/_apis/release/deployments?definitionId=12&definitionEnvironmentId=28

它没有显示那些还没有部署的(我正在寻找的)。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-11-10 02:16:33

除非有更好的办法,我现在看不到,否则这可能会奏效。

将最新的已部署版本发布到环境中。

代码语言:javascript
复制
https://<server>/<collection>/<project>/_apis/release/deployments?definitionId=<def_ID>&definitionEnvironmentId=<env_ID>&$top=1&api-version=4.1-preview.2

获取从JSON创建此版本的时间。在要在下一个命令中使用的中添加一秒:

代码语言:javascript
复制
https://<server>/<collection>/<project>/_apis/release/releases?definitionId=<def_ID>&minCreatedTime=<datetime>&api-version=4.1-preview.2

现在我们可以遍历这个JSON结果中的版本。

下面是理解这一概念的powershell脚本:

代码语言:javascript
复制
param(
    [String]$TFSurl         = "",               # URL to access TFS server
    [String]$TFScollection  = "",               # Collection name in TFS
    [String]$TFSproject     = "",               # Name of the project in TFS
    [String]$APIversion     = "4.1-preview.2",  # Version of API to be used

    [String]$definitionId               = "",   # Release definition ID
    [String]$definitionEnvironmentId    = "",   # Environment ID inside the release definition


    $debugTrace = "SilentlyContinue" # SilentlyContinue, Continue
)

$dtformat = 'yyyy-MM-ddTHH:mm:ss.FFFFFK'    # DateTime format used by TFS API and returned in Json.


# Get last release that was deployed to the environment to get date and time when it was created
$uri = "$TFSurl/$TFScollection/$TFSproject/_apis/release/deployments?definitionId=$definitionId&definitionEnvironmentId=$definitionEnvironmentId&`$top=1&api-version=$APIversion"

Write-Host "Calling REST: $uri"
$result = Invoke-RestMethod -Method 'Get' -ContentType 'application/json' -uri $uri -UseDefaultCredentials

Write-Host "Release Definition:    " $result.value.releaseDefinition.name
Write-Host "Environment name:      " $result.value.releaseEnvironment.name
Write-Host "Last release deployed: " $result.value.release.name
Write-Host "Release create date:   " $result.value.completedOn

# add 1 second to create date to make sure we don't get the same realease again
$dateTimeNew=[datetime]::ParseExact($result.value.completedOn,$dtformat,$Null).AddSeconds(1).ToString($dtformat)
Write-Host "Release time +1 second:" $dateTimeNew

# Get list of releases avaialble since specified date and time
$uri = "$TFSurl/$TFScollection/$TFSproject/_apis/release/releases?definitionId=$definitionId&minCreatedTime=$dateTimeNew&queryOrder=ascending&api-version=$APIversion"

Write-Host "Calling REST: $uri"
$result = Invoke-RestMethod -Method 'Get' -ContentType 'application/json' -uri $uri -UseDefaultCredentials

foreach ($V in $result.value) {
    Write-Host "Release: $($V.releaseDefinition.name) (id=$($V.releaseDefinition.id)) $($V.name) (id=$($V.id))"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69892219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档