如何在构建中设置变量并在发布中获取它?
How to set a variable in build and get it in release?
我们有一个版本号,它是在构建期间从文件中检索到的,需要传递给部署脚本。在 TFS 2017 中执行此操作的最佳方法是什么?
目前想把这个版本号嵌入artifact文件名中,在部署时解析,感觉有点笨拙。
BTW,有没有办法轻松获取神器文件名?看起来 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
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.112.1zipz.exe x -oF:\TFS2017_Release_Agent\_work\r1\a 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
首先,自定义构建变量不能直接用于 TFS 2017 的发布定义中。
之前也有相关用户的声音:
Project level build/release variables
作为解决方法,您可以使用一些第 3 方扩展,例如 Variable (de|re)Hydration Tasks,帮助您在发布工作流程中使用构建变量。
- 变量脱水任务 - 在构建过程中,您可以将变量保存到与其他构建资产一起存储的 json 文件中
- 变量再水化任务 - 在发布期间,您可以加载保存的变量并访问它们。
它通过前缀来做到这一点,因此您可以 save/restore 所有以 'BUILD-' 为前缀的默认构建变量,但是如果您 您自己的变量 即 'ABC_' 你也可以从你的构建中保存它们并在你的版本中恢复它们。
另一种方式是通过powershell脚本实现,具体方法请参考:
关于构建工件名称,没有相关的预定义系统变量,它只是在 Publish Build Artifacts 任务中作为参数输入。
我们有一个版本号,它是在构建期间从文件中检索到的,需要传递给部署脚本。在 TFS 2017 中执行此操作的最佳方法是什么?
目前想把这个版本号嵌入artifact文件名中,在部署时解析,感觉有点笨拙。
BTW,有没有办法轻松获取神器文件名?看起来 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
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.112.1zipz.exe x -oF:\TFS2017_Release_Agent\_work\r1\a 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
首先,自定义构建变量不能直接用于 TFS 2017 的发布定义中。
之前也有相关用户的声音:
Project level build/release variables
作为解决方法,您可以使用一些第 3 方扩展,例如 Variable (de|re)Hydration Tasks,帮助您在发布工作流程中使用构建变量。
- 变量脱水任务 - 在构建过程中,您可以将变量保存到与其他构建资产一起存储的 json 文件中
- 变量再水化任务 - 在发布期间,您可以加载保存的变量并访问它们。
它通过前缀来做到这一点,因此您可以 save/restore 所有以 'BUILD-' 为前缀的默认构建变量,但是如果您 您自己的变量 即 'ABC_' 你也可以从你的构建中保存它们并在你的版本中恢复它们。
另一种方式是通过powershell脚本实现,具体方法请参考:
关于构建工件名称,没有相关的预定义系统变量,它只是在 Publish Build Artifacts 任务中作为参数输入。