gpt4 book ai didi

build - TFS 2015 构建 : Is it possible to use Variables in Repository mappings?

转载 作者:行者123 更新时间:2023-12-04 11:35:23 27 4
gpt4 key购买 nike

在 TFS 2015 上创建 vNext 构建时,您可以定义变量,然后在构建步骤中使用这些变量,也可以在构建运行的脚本中用作环境变量。

我正在处理的构建运行从映射位置提取文件的脚本,所以如果我可以定义一个变量并在映射中使用它会很棒,例如,如果我更新正在构建的项目中的引用,我可以简单地使用新位置更新变量,并使存储库映射和脚本都从新位置正确提取,而无需在多个位置进行更改。

我尝试通过如下设置变量和映射来做到这一点,
enter image description here
enter image description here
但是当您尝试保存构建提示映射中有两个“$”字符时,这会产生错误。有没有办法做到这一点,或者目前不可能?

最佳答案

这也让我困扰了很长一段时间。

对于初学者来说,这个功能有一个用户语音请求。您可以在此处添加您的投票和输入以让 Microsoft 允许此功能:https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/14131002-allow-variables-in-repository-variables-and-trigg

其次,我们已经开发了一种解决方法,可以让我们大部分时间都在那里。它并不完美,但如果您对权衡感到满意或可以解决缺陷,它可能对您有用。

首先关闭构建的“标签源”选项并将服务器路径字段映射到您的基础构建。您需要向构建定义添加一个自定义变量,以告诉构建实例从哪个 TFS 位置提取。例如,我们有一个基础项目,然后该项目有多个分支,因此我们的源代码结构如下

$\Team Project\Project1
$\Team Project\Project1Branch1
$\Team Project\Project1Branch2
$\Team Project\Project1Branch3

我们创建了一个名为“Branch”的变量,我们可以将其设置为“Branch1”、“Branch2”等等。

当我们想要构建基础项目时,我们在启动构建时将 Branch 变量留空。对于分支构建,我们将其设置为我们要构建的分支的名称。

然后我们的构建步骤看起来像这样
  • 将工作区文件夹重新映射到分支文件夹
  • 获取指定分支的文件 - 我们必须在之后手动执行此操作
    重新映射我们的工作区
  • 编译指定分支中的源
  • 从指定分支发布构建工件
  • 手动标记指定分支的代码

  • Remap 任务运行命令
    tf workfold "$/Team Project/Project1$(Branch)" "$(build.sourcesDirectory)\$(Build.DefinitionName)$(Branch)"

    手动获取任务运行以下命令
    get /recursive /noprompt "$/Team Project/Project1$(Branch)"

    构建使用 Branch 变量指向指定分支的解决方案文件的正确位置
    $(build.sourcesDirectory)\$(Build.DefinitionName)$(Branch)\SolutionFile.sln

    Publish Artifacts 任务在 Contents 字段和 Path 字段中使用 Branch 变量
    内容示例
    **\$(Build.DefinitionName)$(Branch)\bin

    标签代码任务使用以下命令
    tf label "$(build.buildNumber)" "$/Team Project/Project1$(Branch)" /recursive

    此设置的缺点是您不会将关联的更改和工作项捕获到您的附属分支,因为服务器路径字段始终设置为主要位置。如果在启动旨在投入生产的构建之前总是从分支合并到主要位置,这可能不是问题。您可以做些什么来弥补这一点实际上取决于您的用例。

    通过一些调整,如果需要,您也可以使用相同的格式来指定完整路径。

    关于build - TFS 2015 构建 : Is it possible to use Variables in Repository mappings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36453360/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com