【问题标题】:Team Foundation Server Build Tasks - Escape Characters?Team Foundation Server 构建任务 - 转义字符?
【发布时间】:2018-01-24 21:04:15
【问题描述】:

我正在使用 TFS 2017。我有一些针对在 Mac OSX 代理上运行的 iOS 应用程序的构建定义。这些构建定义包含一个或多个 Shell (Bash) 脚本和命令行任务。在这些任务中,我尝试使用物理 Mac 计算机上的环境变量。问题是,要使用 Mac 的环境变量,我需要通过 TFS 构建任务发送一个“$”。当 TFS 将它发送到 Mac 代理时,它似乎在翻译中迷失了(我假设是因为 Build def 使用“$”作为它自己的变量)。这是我正在尝试做的一个示例:

命令行任务:

工具

/TEE/tf

参数

checkin -comment:"Advance Version Number - $(SolutionName) to $(< newversion.txt) (TFS BuildNumber:  $(Build.BuildNumber))" "$(Build.SourcesDirectory)/$(Info.plist.Path)" -login:$(TfsLogin),$(TfsPassword)

以及由此产生的 TFS 变更集:

Advance Version Number - MyiOSSolution to $(< newversion.txt) (TFS BuildNumber:  20180124.53)

前面的 Build 任务是一个 Bash 脚本,它更新 iOS 项目的版本号(在 info.plist 文件中)并创建文件“newversion.txt”。 “newversion.txt”包含带有新版本号的单行。事实证明,一旦先前的 Bash 脚本终止,就很难持久化环境变量。所以我改为尝试将新版本号写入可以在后续构建任务中获取的文件。

此命令行任务的目标是使用 TEE(Team Explorer Everywhere)来签入更改后的 info.plist 文件。并在签入注释中使用新版本号。

在终端中使用“$(

【问题讨论】:

  • 变量名是什么? “

标签: macos tfs tfsbuild


【解决方案1】:

您可以尝试使用 Visual Studio Marketplace 中的 VSTS Variable Tasks extension

当您在“变量”屏幕中定义一个变量并使用其他变量作为值时,它们不会被扩展(正如您所预料的那样)。相反,文字文本被传递给工作流中的任务。如果没有这个小任务,以下配置将无法工作:

Variable              Value
Build.DropLocation    \\share\drops\$(Build.DefinitionName)\$(Build.BuildNumber)

通过将 Expand variable(s) 任务添加到工作流的顶部,它会负责扩展,因此它下面的任何任务都会收到您所追求的值。

https://github.com/jessehouwing/vsts-variable-tasks/wiki/Expand-Variable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2010-10-03
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多