TFS如何在构建中设置变量并在发布中获取它?

时间:2017-12-08 16:45:00

标签: tfs2017

我们在构建期间将从文件中检索版本号,并且需要将其传递给部署脚本。在TFS2017中,最好的方法是什么?

现在,我们正在考虑将此版本号嵌入到工件文件名中并在部署期间解析它,感觉有点笨拙。

顺便说一下,有没有办法轻松获取工件文件名?看起来TFS已经知道这一点,如下面的日志所示:

No path specified for search pattern: *.zip defaulting to: F:\TFS2017_Release_Agent\_work\r1\a

2017-12-08T16:38:36.8519067Z Searching for: *.zip under directory: F:\TFS2017_Release_Agent\_work\r1\a

2017-12-08T16:38:36.8519067Z Found: 1 files to extract:

2017-12-08T16:38:36.8519067Z F:\TFS2017_Release_Agent\_work\r1\a\ZFJ0_ServiceSearchPlusBuildDefn\BETALink.Service.SearchPlus\ZFJ0_BETALink10.4 DevOps_BETALink.Service.SearchPlus_1.0.0_886.zip

2017-12-08T16:38:36.8519067Z Creating destination folder: F:\TFS2017_Release_Agent\_work\r1\a\48

2017-12-08T16:38:36.8519067Z Extracting file: F:\TFS2017_Release_Agent\_work\r1\a\ZFJ0_ServiceSearchPlusBuildDefn\BETALink.Service.SearchPlus\ZFJ0_BETALink10.4 DevOps_BETALink.Service.SearchPlus_1.0.0_886.zip

2017-12-08T16:38:36.8519067Z [command]F:\TFS2017_Release_Agent\_work\_tasks\ExtractFiles_5e1e3830-fbfb-11e5-aab1-090c92bc4988\1.112.1\7zip\7z.exe x -oF:\TFS2017_Release_Agent\_work\r1\a\48 F:\TFS2017_Release_Agent\_work\r1\a\ZFJ0_ServiceSearchPlusBuildDefn\BETALink.Service.SearchPlus\ZFJ0_BETALink10.4 DevOps_BETALink.Service.SearchPlus_1.0.0_886.zip

2017-12-08T16:38:36.8987827Z 

1 个答案:

答案 0 :(得分:2)

首先,自定义构建变量无法直接在TFS 2017的发布定义中使用。

还有一个相关的用户声音:

  

项目级别构建/发布变量

     

https://visualstudio.uservoice.com/forums/330519-visual-studio-team-services/suggestions/14515326-project-level-build-release-variables#

作为一种变通方法,您可以使用某些第三方扩展程序(例如Variable (de|re)Hydration Tasks)来帮助您在发布工作流程中使用构建变量。

  • 可变脱水任务 - 在构建过程中,您可以将变量保存到与其他构建资源一起存储的json文件中
  • 可变补液任务 - 在您的发布期间,您可以加载已保存的变量并获取对它们的访问权。

它通过前缀执行此操作,因此您可以保存/恢复所有以“BUILD-”为前缀的默认构建变量,但如果您使用“ABC_”前缀您自己的变量,您也可以从构建中保存它们并在发布中恢复它们。

另一种方法是通过powershell脚本来完成,如何请参考:TFS 2015 Release management access build variables

关于构建工件名称,没有相关的预定义系统变量,它只是作为发布构建工件任务中的参数输入。