作为 TFS 构建的一部分,仅从 TFS 签入文件

Get only checked in files from TFS as part of TFS build

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

powershell 脚本可能是?请帮忙

这在 TFS 2015 中是不可能的。TFS 2017 引入了 "don't sync sources" 的功能,之后您可以执行自己的 get 操作。您可以尝试在存储库选项卡上隐藏整个存储库,然后在触发器选项卡上创建 CI TFVC Include 触发器定义以重新创建此行为。

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

您可以在构建定义中添加 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 Client Library才能使用此脚本,详情请参考此link:PowerShell and TFS: The Basics and Beyond.