1

我正在尝试设置 CD 以暂存我们的一个应用程序。我将其设置为执行以下操作:

  1. 合并到 master 导致 TFS 构建和自动部署到 devlab
  2. 构建步骤在 tfs 中启动 e2e 测试并针对 devlab 运行测试
  3. 如果 e2e 测试通过,我想将构建提升为暂存,然后我将重复这些步骤(停止自动部署到产品)

这是我遇到问题的地方:

我在 e2e 测试构建中有一个构建步骤,称为“将项目推广到章鱼”——这个构建也按预定的节奏(每晚)运行,所以我只想要最后一步(将项目推广到章鱼)如果踢的用户关闭测试是octopus-user(这是我们给机器人起的名字)。

将此用作资源:https ://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml#examples

在此构建步骤的“自定义条件”中,我使用上面链接中提供的指南尝试了几个不同的变量。这里有 2 个示例:

and(succeeded(),equals(variables['Build.RequestedBy],'octopus-user'))

and(succeeded(), equals(variables['Build.RequestedFor'], 'octopus-user'))

如果我删除此变量,则构建成功并将构建升级为暂存,如预期的那样。当我插入变量时,我得到了不同的失败,如果它是由特定用户启动的,任何人都有关于如何设置变量启动的指导?(在这种情况下octopus-user) - 问题可能是用户名的格式,也许它需要是电子邮件地址(尽管我已经尝试过,以及用户的 AD 凭据)。

4

1 回答 1

0

条件写成表达式。代理评估从最里面的函数开始的表达式并找出它的出路。最终结果是一个布尔值,用于确定任务、作业或阶段是否应该运行。有关语法的完整指南,请参阅表达式主题。

根据执行上下文,可以使用不同的变量。

  • 如果您使用 YAML 创建管道,则管道变量可用。
  • 如果您使用经典编辑器创建构建管道,则构建变量可用。
  • 如果您使用经典编辑器创建发布管道,则发布变量可用。

根据您的描述,如果您想使用 E-mail 地址,请使用Build.RequestedForEmail代替Build.RequestedFor

如果您的名称/值包含空格,请参阅“如何设置身份变量? ”。

注意:此值可以包含空格或其他无效标签字符。在这些情况下,标签格式将失败。

于 2019-08-21T10:09:26.300 回答