通过Java SDK进行TFS 2015发布管理?
有了内部部署TFS 2015,我们正试图使用我们用Java编写的命令行工具自动化发布管理。该工具已经使用TFS Java SDK来执行许多其他操作 我们需要它:通过Java SDK进行TFS 2015发布管理?,java,tfs,Java,Tfs,有了内部部署TFS 2015,我们正试图使用我们用Java编写的命令行工具自动化发布管理。该工具已经使用TFS Java SDK来执行许多其他操作 我们需要它: 创建一个新版本 将发行版部署到指定的环境 当通过web GUI完成时,这两项都可以很好地工作。但是,根据JavaSDK中的类列表,这些特性在SDK中似乎不可用。这是正确的,还是有办法自动化这些部署步骤 如果做不到这一点,是否存在RESTAPI?我们找到了一个,但它似乎需要比TFS 2015支持的API版本更新的API版本4.0…您可
- 创建一个新版本
- 将发行版部署到指定的环境
如果做不到这一点,是否存在RESTAPI?我们找到了一个,但它似乎需要比TFS 2015支持的API版本更新的API版本4.0…您可以使用REST API来实现这一点(使用API版本
API版本=2.3-preview.1
):
我在TFS 2015更新4(Version 14.114.26403.0
)上使用以下PS脚本进行了测试,结果与预期一致
下面是供您参考的PowerShell脚本:
创建一个新的发行版(参见RESTAPI)
将发行版部署到指定的环境:(在此示例中部署第三个环境,只需根据您的需求进行更改。)
您还可以将它们放在一起,创建一个新版本,并在一个脚本中部署特定的环境。请参阅中的我的答案。您可以使用REST API来实现这一点(使用API版本
API版本=2.3-preview.1
):
我在TFS 2015更新4(Version 14.114.26403.0
)上使用以下PS脚本进行了测试,结果与预期一致
下面是供您参考的PowerShell脚本:
创建一个新的发行版(参见RESTAPI)
将发行版部署到指定的环境:(在此示例中部署第三个环境,只需根据您的需求进行更改。)
您还可以将它们放在一起,创建一个新版本,并在一个脚本中部署特定的环境。查看我的答案。谢谢,非常有帮助,这看起来正是我们需要的!谢谢,非常有帮助,这看起来正是我们需要的!
Param(
[string]$collectionurl = "http://server:8080/tfs/Collection",
[string]$projectName = "ProjectName",
[string]$keepForever = "true",
[string]$user = "username",
[string]$token = "token",
[string]$releasedDefinitionId = "2"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
function CreateJsonBody
{
$value = @"
{
"definitionId":$releasedDefinitionId,
"description":"",
"artifacts":[
{
"alias":"VSTEST",
"instanceReference":{
"name":"20171123.1",
"id":"1256",
"sourceBranch":"$/0418Scrum/web0418"}
}],
"isDraft":false,
"manualEnvironments":[]
}
"@
return $value
}
$json = CreateJsonBody
$uri = "$($collectionurl)/$($projectName)/_apis/Release/releases?api-version=2.3-preview.1"
$result = Invoke-RestMethod -Uri $uri -Method Post -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$ReleaseID = $result.id
Write-Host "ReleaseID:" $ReleaseID
Param(
[string]$baseurl = "http://server:8080/tfs/CollectionLC",
[string]$projectName = "ProjectName",
[string]$keepForever = "true",
[string]$user = "username",
[string]$token = "token",
[string]$ReleaseID = "3"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
#Get releaseresponse
$Releaseurl= "$baseurl/$projectName/_apis/Release/releases/$ReleaseID"
$releaseresponse = Invoke-RestMethod -Method Get -UseDefaultCredentials -ContentType application/json -Uri $Releaseurl
#Get all of the environment IDs from the release response:
$environmentIDs = $releaseresponse.environments.ForEach("id")
#Get the specific environment ID by grabbing the element in the environment IDs array:
$firstEnvironment = $environmentIDs[0]
$secondEnvironment = $environmentIDs[1]
$thirdEnvironment = $environmentIDs[2] # ...
#Create the JSON body for the deployment:
$deploymentbody = @"
{"status": "inprogress"}
"@
#Invoke the REST method to redeploy the release:
$DeployUrl = "$baseurl/$projectName/_apis/release/releases/$releaseid/environments/"+$thirdEnvironment+"?api-version=2.3-preview.1" # Change the envrionment ID accordingly based on your requirement.
$DeployRelease = Invoke-RestMethod -Method Patch -ContentType application/json -Uri $DeployUrl -Headers @{Authorization=("Basic {0}" -f $base64authinfo)} -Body $deploymentbody
write-host "environmentIDs:" $environmentIDs