Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Java SDK进行TFS 2015发布管理?_Java_Tfs - Fatal编程技术网

通过Java SDK进行TFS 2015发布管理?

通过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…您可

有了内部部署TFS 2015,我们正试图使用我们用Java编写的命令行工具自动化发布管理。该工具已经使用TFS Java SDK来执行许多其他操作

我们需要它:

  • 创建一个新版本
  • 将发行版部署到指定的环境
当通过web GUI完成时,这两项都可以很好地工作。但是,根据JavaSDK中的类列表,这些特性在SDK中似乎不可用。这是正确的,还是有办法自动化这些部署步骤


如果做不到这一点,是否存在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