Msbuild TeamCity:管理验收测试的部署依赖项?
我正在尝试在TeamCity 6中配置一组构建配置,并尝试以TeamCity支持的最干净的方式对特定需求建模 我有一套验收测试(大约4-8套测试,按它们所属系统的功能区域分组),我希望并行运行(我将把它们建模为构建配置,以便它们可以分布在一组代理中) 从我最初的研究来看,似乎有一个Msbuild TeamCity:管理验收测试的部署依赖项?,msbuild,teamcity,acceptance-testing,automated-deploy,Msbuild,Teamcity,Acceptance Testing,Automated Deploy,我正在尝试在TeamCity 6中配置一组构建配置,并尝试以TeamCity支持的最干净的方式对特定需求建模 我有一套验收测试(大约4-8套测试,按它们所属系统的功能区域分组),我希望并行运行(我将把它们建模为构建配置,以便它们可以分布在一组代理中) 从我最初的研究来看,似乎有一个AcceptanceTestsmeta-build配置,可以通过一组单独的验收测试配置来实现这一点。然后我要做的就是说我的Commitbuild配置应该触发AcceptanceTests,它们都会被拉进来。因此,假设我
AcceptanceTests
meta-build配置,可以通过一组单独的验收测试配置来实现这一点。然后我要做的就是说我的Commit
build配置应该触发AcceptanceTests
,它们都会被拉进来。因此,假设我还有AcceptanceSuiteA
,AcceptanceSuiteB
和AcceptanceSuiteC
到目前为止,一切都很好(我知道我也可以用另一种方式来改变它,并导致Commit
config触发AcceptanceSuiteA
,AcceptanceSuiteB
和AcceptanceSuiteC
——问题是我需要手动汇总结果,以确定验收测试的整体成功率)
复杂的一点是,AcceptanceSuiteC
只需要一些Commit
工件就可以独立生存,AcceptanceSuiteA
和AcceptanceSuiteB
需要:
(假设需要2分钟,我无法为这次运行启动一个完全隔离的站点)DeploySite
- 对部署的站点运行测试
- 该网站只配置一次
- 当这两个套件运行时,网站不会遭到破坏
DeploySite
设置为构建配置,并将AcceptanceSuiteA
和AcceptanceSuiteB
作为快照依赖项拉入,AFAICT:
- 后续的或并行运行的<代码> Access StuteSueTeB/COD>可能触发另一个<代码>部署站点,这将阻塞部署:<代码> Access StuteSueTe>代码>和/或<代码> Access StutueBe>代码>在使用中。
DeploySite
可以设置一个“使用中标志”标记,然后让AcceptanceTests
config清除该标志[在AcceptanceSuiteA
和AcceptanceSuiteB
完成后]。然后,问题就变成了让下一个DeploySite
在管道中等待,直到所说的门再次打开(在构建中执行阻塞等待,感觉不对劲——我希望它被标记为“尚未启动”,而不是看起来需要很长时间才能完成某件事情)。然而,这类东西在这里有一个标志,让我们检查一下,这是我试图摆脱的那种可变状态/片状气味
编辑2:如果我可以通过编程方式更改代理配置,我可以设置为require InUse=false,然后在部署启动时设置标志,并在测试运行后清除标志。您可以先查看,然后记住在搜索中使用神奇的单词clobber
然后安装并使用startBuildPremission
功能
要使用该功能,请添加system.locks.readLock。或system.locks.writeLock。属性设置为生成配置。
只有在没有使用相同名称的读锁或写锁运行的生成时,才会启动具有writeLock的生成。
只有在没有使用相同名称的写锁运行的生成时,才会启动具有readLock的生成
其中用于管理从属配置“读取”和DeploySite
config“写入”共享项的事实
(这不是一个全面生产的解决方案,因此跟踪器项目保持打开状态)
编辑:我仍然不知道锁是否应该在构建参数|系统属性下,确切的名称格式应该是什么,是locks.writeLock.MYLOCKNAME
(即,在配置中显示引用语法%System.locks.writeLock.MYLOCKNAME%
)
其他难题是:如何管理由writeLock任务读取访问的生成完成触发的生成-锁是否会在下一个读取之前被丢弃(这将允许另一个写入者进入)-或者有必要让某个内容同时排队处理父依赖项和子依赖项吗?看起来这已在和中介绍过