如何在 TFS 2017u2 构建和发布任务中使用变量指定安全文件输入值

Posted

技术标签:

【中文标题】如何在 TFS 2017u2 构建和发布任务中使用变量指定安全文件输入值【英文标题】:How to use variable to specify Secure File input value in TFS 2017u2 Build and Release task 【发布时间】:2018-04-05 18:09:10 【问题描述】:

在 Microsoft Team Foundation Server 2017 更新 2 的构建/发布任务(自定义或开箱即用)中使用“securefile”输入类型时,如何使用变量指定我希望的安全文件的名称去下载?或者,如何强制 TFS 为直到运行时才知道的文件发出安全文件下载票证?

开箱即用的安全文件输入类型会强制您从值的下拉列表中进行选择,并且不允许输入任何不在列表中的字符(包括变量名称)。

我们的工作流程包括生成新的 x509 证书并将其推送到安全文件库中,并设置 CN、指纹、SAN 等条目的属性。然后,我们需要将文件下拉到代理以执行稍后的任务工作流程。但是,由于设计时该文件不在库中,因此我们无法在列表中选择它。

我们尝试实现自定义下载任务。但是,如果您不使用“securefile”输入类型并在定义构建时指定所需的确切文件,TFS 不会向代理发出下载票证,因此您无法下载实际文件(只有元数据)。

【问题讨论】:

【参考方案1】:

您可以在您的 TFS 上安装扩展程序 Download Secure File。

但是很遗憾,下载安全文件任务中不能使用变量。

这里有一个问题提交:Enable to use a variable to specify the secure file to download 建议使用此功能,您可以跟进。

还有一个User Voice here submitted 建议使用 REST API 下载安全文件的功能,您可以去投票以实现该功能。

相关线程供您参考:

Download secure file with PowerShell Get secure file download ticket via .NET API

【讨论】:

感谢@Andy-Li-MSFT。然而,这不是我希望的答案。输入类型(如安全文件)的代码是否在某个地方开源,我们至少可以看到 TFS 在内部对它做了什么?我很好奇它是如何知道何时出票的。正如你提到的,我在 vsts 任务网站上添加了一个问题:github.com/Microsoft/vsts-tasks/issues/6885

以上是关于如何在 TFS 2017u2 构建和发布任务中使用变量指定安全文件输入值的主要内容,如果未能解决你的问题,请参考以下文章

用于更新文件和签入 TFS 的 Azure DevOps 管道任务

如何解决运行代码分析任务TFS中文件无法被索引两次错误?

TFS 构建未显示测试结果摘要

TFS。将变量从触发的构建传递到发布中的下一个任务

构建变量在 TFS 中的发布中不起作用

如何在 TFS 2017 中从多个来源克隆代码?