如何将Visual Studio Team Service构建复制到新项目?

时间:2016-02-27 14:40:45

标签: azure-devops tfsbuild azure-pipelines

我将一组特定的构建从现有的Visual Studio Team Service项目移动到一个新项目。不幸的是,我找不到将构建定义从一个项目迁移到另一个项目的方法。它似乎不是一个导入/导出功能或其他机制。

有没有办法在不手动重新创建新项目的构建的情况下移动它们?

6 个答案:

答案 0 :(得分:16)

现在可以从VSTS Build Definitions Web UI中获取:

VSTS Export and clone

答案 1 :(得分:13)

您可以立即使用Visual Studio Marketplace中的Export/Import Build Definition扩展名。

答案 2 :(得分:4)

您可以执行以下操作:

$project1Url = "http://tfs:8080/tfs/collection/project1/_apis/build/definitions/$($buildId)?api-version=2.0"
$obj = Invoke-RestMethod -Uri $project1Url -Method Get -ContentType "application/json" -UseDefaultCredentials

$obj.project = $null

#TODO: Update all repository/source control info, too.

$json = ConvertTo-Json $obj -Depth 3

$project2Url = "http://tfs:8080/tfs/collection/project2/_apis/build/definitions/?api-version=2.0"
Invoke-RestMethod -Uri $url -Method Post -Body $json -ContentType "application/json" -UseDefaultCredentials

要点是:从源项目(projec1)获取现有定义,清除项目关系,根据需要设置新的存储库信息,并将新定义作为POST(CREATE)发送到目标项目(项目2)。

答案 3 :(得分:3)

无法在团队项目之间复制或同步vnext构建定义模板。构建定义模板仅适用于当前团队项目。因此,您需要为每个团队项目创建构建定义模板。

此外还有 UserVoice 上的功能请求,您可以投票并进行监控

  

VSO构建vnext:在项目之间共享构建模板   https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/8468566-vso-build-vnext-share-build-templates-between-pro

但是,可以使用API​​实现。您可以使用a simple tool。 (需要在同一个团队项目集合中。)

答案 4 :(得分:2)

您可以使用REST API执行此操作。有an example shown here

它展示了如何获取构建定义的JSON响应,并再次使用相同的引用在您想要的项目中创建一个新的响应。

答案 5 :(得分:0)

  1. 在源项目导出中(通过...)每个构建定义

  2. 在“目标”项目的构建定义的文件夹视图中,新建->导入一个并进行以下调整: 代理池 资料库 路径(稍后保存保存导入时将对其进行检查)

  3. 导出成功导入的构建定义

  4. 编辑其余提取的构建定义,并用代理池,存储库和路径的值替换(用第一个成功导入的构建定义中的值)
  5. 导入其余版本 评审名称(删除-import后缀) 查看代理池 保存导入的版本时,请查看“目标”项目的文件夹视图中的“路径”