Pau*_*ain 7 build tfs-2015 asp.net-core
在TFS 2015上创建vNext构建时,您可以定义变量,然后在构建步骤中使用这些变量,也可以在构建运行的脚本中用作环境变量.
我正在开发的构建运行从映射位置提取文件的脚本,所以如果我可以定义一个变量并在映射中使用它,那将是很好的,例如,如果我更新项目构建中的引用,我可以简单地使用新位置更新变量,并使存储库映射和脚本全部从新位置正确拉出,而无需在多个位置进行更改.
我已经尝试通过设置变量和映射如下,
但是当您尝试保存构建时会产生错误,抱怨映射中有两个"$"字符.有办法做到这一点还是目前不可能?
小智 5
这也让我好一阵子了。
对于初学者,此功能有一个uservoice请求。您可以在此处添加投票和输入内容,以使Microsoft启用此功能:https : //visualstudio.uservoice.com/forums/330519-team-services/suggestions/14131002-allow-variables-in-repository-variables-and-特里格
其次,我们已经开发出一种变通方法,可以帮助我们实现目标。它不是完美的,但是如果您对折衷感到满意或可以解决缺陷,则对您可能有用。
首先关闭构建的“标签源”选项,然后将“服务器路径”字段映射到基础构建。您将想要向Build Definition添加一个自定义变量,以告诉构建实例要从哪个TFS位置提取。例如,我们有一个基础项目,然后有该项目的多个分支,因此我们的源代码的结构如下
$\Team Project\Project1
$\Team Project\Project1Branch1
$\Team Project\Project1Branch2
$\Team Project\Project1Branch3
Run Code Online (Sandbox Code Playgroud)
然后创建一个名为“ Branch”的变量,可以将其设置为“ Branch1”,“ Branch2”,依此类推。
当我们要构建基础项目时,在启动构建时将Branch变量保留为空白。对于分支构建,我们将其设置为要构建的分支的名称。
然后我们的构建步骤如下所示
重新映射任务运行命令
tf workfold "$/Team Project/Project1$(Branch)" "$(build.sourcesDirectory)\$(Build.DefinitionName)$(Branch)"
Run Code Online (Sandbox Code Playgroud)
手动获取任务运行以下命令
get /recursive /noprompt "$/Team Project/Project1$(Branch)"
Run Code Online (Sandbox Code Playgroud)
生成使用Branch变量指向指定分支的解决方案文件的正确位置。
$(build.sourcesDirectory)\$(Build.DefinitionName)$(Branch)\SolutionFile.sln
Run Code Online (Sandbox Code Playgroud)
“发布工件”任务在“内容”字段和“路径”字段中都使用Branch变量。
**\$(Build.DefinitionName)$(Branch)\bin
Run Code Online (Sandbox Code Playgroud)
标签代码任务使用以下命令
tf label "$(build.buildNumber)" "$/Team Project/Project1$(Branch)" /recursive
Run Code Online (Sandbox Code Playgroud)
此设置的缺点是您不会将关联的更改和工作项捕获到子分支,因为“服务器路径”字段始终设置为主要位置。如果您始终在启动要投入生产的构建之前从分支机构合并到主要位置,则这可能不是问题。您能做些什么来弥补这一点,实际上取决于您的用例。
通过一些调整,如果需要,您也可以使用相同的格式来指定完整路径。
不可能。正如错误消息中提到的:映射中有两个“$”字符。这意味着您的应用程序的路径不应因构建而异。
存储库页面上的映射用于指定源代码管理文件夹,其中包含需要在构建定义中构建的项目。您可以通过单击省略号 (...) 按钮来设置它,但是,您不能在映射路径中包含变量。
有一个类似的问题:Variables in TFS Mappings on Visual Studio Online Team Builds
| 归档时间: |
|
| 查看次数: |
1874 次 |
| 最近记录: |