gpt4 book ai didi

msbuild - TeamCity:管理验收测试的部署依赖关系?

转载 作者:行者123 更新时间:2023-12-04 15:37:01 24 4
gpt4 key购买 nike

我正在尝试在 TeamCity 6 中配置一组构建配置,并尝试以 TeamCity 启用的最简洁的方式对特定需求进行建模。

我有一组验收测试(大约 4-8 套测试,按它们所属系统的功能区域分组),我希望并行运行(我将它们建模为构建配置,以便它们可以分布在一组代理)。

从我最初的研究来看,似乎有一个 AcceptanceTests通过 Snapshot dependencies 拉入一组单独的验收测试配置的元构建配置应该做的伎俩。那么我所要做的就是说我的Commit构建配置应该触发 AcceptanceTests他们都会被拉进来。所以,假设我也有 AcceptanceSuiteA , AcceptanceSuiteBAcceptanceSuiteC
到目前为止,一切都很好(我知道我也可以反过来让 Commit 配置触发 AcceptanceSuiteAAcceptanceSuiteBAcceptanceSuiteC - 问题是我需要手动聚合结果来确定验收测试的整体成功)。

复杂的一点是,虽然 AcceptanceSuiteC只需要一些 Commit文物,然后可以自己生活,AcceptanceSuiteAAcceptanceSuiteB需要:

  • DeploySite (假设这需要 2 分钟,我不能只为此运行启动一个完全隔离的)
  • 对部署的站点运行测试

  • 问题是我需要能够确保:
  • 网站只配置一次
  • 当两个套件运行时,网站不会被破坏

  • 如果我设置 DeploySite作为构建配置并具有 AcceptanceSuiteAAcceptanceSuiteB将其作为快照依赖项引入,AFAICT:
  • AcceptanceSuiteB 的后续或并行运行可能会触发另一个 DeploySite这会破坏 AcceptanceSuiteA 的部署和/或 AcceptanceSuiteB正在使用中。

  • 虽然我可以说限制同时运行的构建数量以强制一次只发生一个,但我需要一次有一个 而不是在依赖部分仍在运行时。

    TeamCity 有没有办法对这样的层次结构进行建模?

    编辑:想法:-

    一个废话解决方案是 DeploySite可以设置一个“使用中标志”标记,然后设置 AcceptanceTests配置清除该标志 [after AcceptanceSuiteAAcceptanceSuiteB已完成]。然后问题就变成了下一个 DeploySite在管道中等待,直到所述门再次打开(在构建中进行阻塞等待,感觉不对 - 我希望它被标记为“尚未开始”,而不是看起来需要很长时间才能做某事)。然而,这种东西在这里有一个标志,并有一点检查它是我试图摆脱的那种可变状态/片状气味。

    编辑 2:如果我可以以编程方式更改代理配置,我可以设置 Agent Requirements要求 InUse=false 然后在部署开始时设置标志并在测试运行后清除它

    最佳答案

    看来你去看看Jetbrains DevnetYouTrack tracker首先记住使用魔法词clobber在您的搜索中。

    然后你安装 groovy-plug并使用 StartBuildPrecondition设施

    To use the feature, add system.locks.readLock. or system.locks.writeLock. property to the build configuration. The build with writeLock will only start when there are no builds running with read or write locks of the same name. The build with readLock will only start when there are no builds running with write lock of the same name.



    在其中管理依赖配置“读取”和 DeploySite 的事实。配置“写入”共享项。

    (这不是一个完整的产品化解决方案,因此跟踪器项目保持打开状态)

    编辑:我仍然不知道锁是否应该在 下构建参数|系统属性以及确切的名称格式应该是什么,是 locks.writeLock.MYLOCKNAME (即,使用引用语法显示在配置中 %system.locks.writeLock.MYLOCKNAME% )?

    其他令人困惑的问题是:如何管理由 writeLock 任务的构建完成触发的构建读取访问 - 锁是否会被丢弃直到下一个启动(这将允许另一个写入者进入) - 或者是否有必要排队等候 parent 和 child 同时依赖?

    关于msbuild - TeamCity:管理验收测试的部署依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5620189/

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