仅作为TFS构建的一部分从TFS中检入文件

问题描述 投票:1回答:2

我在TFS中检查了我的文件夹的持续集成,触发了TFS2015中的构建。现在作为构建定义的一部分,我想添加一个步骤,该步骤将仅识别和拉取作为变更集的一部分签入的文件,这些文件触发当前构建并将它们复制到目标位置。

PowerShell脚本可能是?请帮忙

powershell tfs msbuild tfs2015 tfvc
2个回答
1
投票

您可以在构建定义中添加Powershell脚本任务来执行此操作。一个简单的脚本供您参考:

$changesetid = $Env:Build_SourceVersion
$TFSURI = $Env:System_TeamFoundationCollectionUri
$tfs = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($TFSURI)
$vcs = $tfs.GetService("Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer")
$cs = $vcs.GetChangeset($changesetid)
foreach ($change in $cs.Changes)
{
    $change.Item.DownloadFile('D:\a\test\' + $change.Item.ServerItem.Substring(1))
}

此代码只获取更改的项目,如果更改集包含其他更改(如删除),您可能需要添加代码来检查此项。

您还需要导入TFS客户端库以使用此脚本,有关详细信息,请参阅此链接:PowerShell and TFS: The Basics and Beyond


2
投票

这在TFS 2015中是不可能的.TFS 2017引入了“不同步源”的功能,之后您可以执行自己的获取操作。您可以尝试在存储库选项卡上隐藏整个存储库,然后在触发器选项卡上创建CI TFVC Include触发器定义以重新创建此行为。

然后,您可以使用tfpt getcs选项来获取变更集的更改。您应该能够从构建Build.SourceVersion变量获取版本。您可以通过在构建服务器上安装Team Foundation Server Power Tools 2015和Team Explorer 2015来获取tfpt

© www.soinside.com 2019 - 2024. All rights reserved.