在 TC 管道中(在构建配置之间)保留对共享资源的锁定

Posted

技术标签:

【中文标题】在 TC 管道中(在构建配置之间)保留对共享资源的锁定【英文标题】:Preserve a lock on shared resource in TC pipeline (between build configurations) 【发布时间】:2016-04-26 08:52:14 【问题描述】:

我有一个包含多个构建配置的 teamcity 管道。其中一些需要用于测试的数据库。到目前为止,我已经在 TeamCity 中配置了一个数据库模式池作为共享资源。每个构建配置都会锁定一个模式,然后将数据库部署到其中作为第一步。现在,我想要一个构建配置来锁定资源,部署数据库,然后它应该被管道中的其他构建使用。

类似:

deploy_db -> build_binaries -> unit tests
                            -> integration tests
                            -> ... other tests

我想并行运行测试版本。为此,我需要在 deploy_db 中锁定一个模式,然后将锁定传递给其他构建。有可能吗?

也许我可以锁定 deploy_db 中模式池中的任何值,然后在其他构建配置中使用 %dep.deploy_db.locked_schema% 锁定特定值。

但是,为另一个分支构建可能会触发可以锁定相同模式的 deploy_db(使用“锁定任何值”)?我的意思是如果在 deploy_db 完成之后和下一个构建执行锁定之前触发它可能是可能的?在 deploy_db 之后和再次获取之前释放锁会有很短的时间。从技术上讲,此时另一个构建可以锁定相同的值。有没有可能防止这种情况发生?

例如,我可以在管道的第一个构建中锁定一个值并在最后一个构建中释放它吗?

【问题讨论】:

【参考方案1】:

目前尚不支持。您可以观看/投票对应request in the issue tracker

【讨论】:

以上是关于在 TC 管道中(在构建配置之间)保留对共享资源的锁定的主要内容,如果未能解决你的问题,请参考以下文章

查看有关 Azure Devops 构建管道的操作日志

谷歌数据流在 Windows 之间共享资源

是否可以在 GitHub Actions 中的 Actions 之间保留 WORKDIR?

过程的通讯:共享存储音讯传递和管道通讯

进程的通信:共享存储消息传递和管道通信

从引用的管道资源中获取最新的构建 ID