【问题标题】:Teamcity - Is there a way to select the build config after it gets assigned to an agent?Teamcity - 有没有办法在将构建配置分配给代理后选择它?
【发布时间】:2020-11-16 20:43:47
【问题描述】:

有没有办法在构建配置从队列中分配给代理后更改它? 我希望的工作流程:

change in vcs root -> queue up 'run tests' -> if Agent A, run 'run tests', if Agent B, run 'run tests in Docker'

更多上下文:我有一个我维护的 teamcity 实例,但没有管理员访问权限。这意味着我无法在服务器上安装我需要的东西。我们在某些构建代理服务器上进行了某些安装。我创建了不同版本的“运行测试”构建配置,这样它就可以在所有可用的代理上运行。这是一个相当简单的区别:测试套件使用一个构建配置(在默认代理上)定期运行,并在其他(在其他两个构建服务器上)的 docker 容器中运行。并非所有服务器都安装了 docker。

需要明确的是,这些构建配置彼此不连续——它们是相同的构建配置,但版本不同。我不希望两个作业都监听 vcs 更改 - 因为这将启动两个构建配置。我只是想在运行之前但在队列之后放置一个条件,但是数据流似乎是一种方式(排队作业,然后分配给代理)。

【问题讨论】:

  • 据我了解,您希望在默认代理以及您可以控制的代理上运行单个构建配置。几个问题:1)您的“在 Docker 中运行测试”构建步骤是否添加了默认代理无法满足的隐式代理要求? 2) 你对默认代理的 buildAgent.properties 文件有写权限吗?
  • @tolache 我配置了代理要求,以便 docker 作业将在安装了 docker 的服务器上运行,反之亦然。我确实有对道具文件的写访问权限是的。这不是确保正确的工作在正确的服务器上运行的问题——我已经涵盖了代理要求。相反,我正在尝试有效地配置自定义触发器,以便在确定将在其上运行的代理之后,将正确版本的“运行测试”排队。

标签: continuous-integration teamcity


【解决方案1】:

您应该能够使用conditional build steps 来实现您所需要的,但我不建议这样做太多,因为该解决方案会有点笨拙:

  1. 将“运行测试”和“在 Docker 中运行测试”这两个构建步骤添加到您的构建配置中。
  2. 向“运行测试”步骤添加条件:如果teamcity.agent.name 等于<dockerless-agent-name>,则执行步骤。
  3. 为“在 Docker 中运行测试”步骤添加另一个条件:如果teamcity.agent.name等于<dockerless-agent-name>,则执行步骤。
  4. 这里是骇人听闻的部分。将 docker 步骤强加的隐式代理要求添加到 dockerless 代理的 buildAgent.properties 文件中。示例:如果您在“在 Docker 中运行测试”步骤中使用 docker wrapper,它将对构建配置施加 docker.server.version exists 代理要求。在这种情况下,请将行 docker.server.version=whaterver 添加到 dockerless 代理的 buildAgent.properties

TeamCity 会认为没有 docker 的代理可以运行“在 Docker 中运行测试”步骤,并且能够将构建分配给该代理。但如果发生这种情况,将执行“运行测试”步骤而不是“在 Docker 中运行测试”。就是这样。

另外,如果ignoring implicit agent requirements if a condition is used in a build step的功能被实现,你将能够在不通过buildAgent.properties破解它的情况下实现目标。

【讨论】:

  • 从某种意义上说,这就是我要寻找的东西。不幸的是,我使用的是过时的 teamcity 版本,我没有能力设置条件。我正在建设我们的新管道,我们正在放弃 TC,所以我只是用胶带把这个东西粘起来,直到我可以把它扔掉。鉴于我的 TC 版本,我认为我无法完成我想做的事情。非常感谢您的帮助,因为您理解了我的问题并给出了可靠的答案。
猜你喜欢
  • 2016-04-04
  • 2012-04-24
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2023-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多