【发布时间】:2019-09-02 04:24:27
【问题描述】:
我们正在使用 Slack 通知我们的开发团队有关生产代码发布的信息。我们发现这样做最灵活的方法是通过 POST 到我们的 Slack 应用程序。在请求的正文中,我传入了 4 个值,如下所示,它们被设置为任务组的参数。
在任务组中我设置了 3 个默认值的参数,它们是: 名称值
- 应用程序名称 $(Release.DefinitionName)
- 环境$(环境)
- 团队 $(System.TeamProject)
我将两个 PowerShell 脚本任务都设置为内联运行。它没有传递参数的选项。现在我只是将值写入控制台以查看发生了什么。
- 写入输出“env $env:environment”
- 写入输出“releaseurl $env:releaseurl”
- 写入输出“团队 $env:team”
- 写入输出“应用程序 $env:applicationname”
在我的 Bash 脚本中,我使用 echo 做同样的事情,它看起来像这样:
- echo env $(环境)
- echo releaseurl $(Release.ReleaseWebURL)
- echo 团队 $(team)
- 回显应用程序 $(应用程序名称)
当我运行这些脚本时,PowerShell 只会打印环境值(在发布工作流中定义)。它甚至无法使用默认的发布变量。
- 2019-04-11T13:23:58.6833137Z 环境生产
- 2019-04-11T13:23:58.6987109Z 发布网址
- 2019-04-11T13:23:58.6997009Z 团队
- 2019-04-11T13:23:58.6999878Z 申请
然而,Bash 的表现与预期一样。
- 2019-04-11T13:24:17.3299022Z 环境生产
- 2019-04-11T13:24:17.3404876Z 团队应用服务
- 2019-04-11T13:24:17.3405018Z 应用发布通知试点
- 2019-04-11T13:24:17.3838219Z releaseurl https://thereleaseurl
Bash 使用 System/Release 变量没有问题。 PowerShell 将仅使用它发现在 VSTS 发布变量中明确定义的任何变量。我希望它使用任务组参数的值,这将允许团队使用默认值或自定义值。
因此,PowerShell 脚本将使用默认为 $(Release.DefinitionName) 的 applicationname 变量。在发布工作流中,团队可以保持原样,或者如果定义名称不够清晰或不适合警报中报告的名称,则可以使用自定义值。我可以让它工作的唯一方法是在发布变量中定义应用程序名称,并将其默认设置为 $(Release.DefinitionName)。
同样,bash 脚本运行良好。 powershell 脚本似乎不喜欢这样。有谁知道为什么?很乐意尝试任何事情。
【问题讨论】: