teamcity - 具有多个部署的 TeamCity 管道,加入单个测试构建并升级到下一个环境
问题描述
我正在尝试在 TeamCity 中构建具有以下属性的部署管道:
- 多个 git 存储库,每个工件一个
- 多种环境:Dev、QA 等...
- 能够将单个工件独立部署到 Dev
- 能够手动触发将一组已知工件从 Dev 提升到 QA
- 如果工件是新版本,则仅在 QA 中重新部署工件
- 每次将任何单个工件部署到 Dev 后,都会运行整个系统的健全性测试
- 每次将一组工件提升到 QA 后,整个系统测试都会运行
现在所有这一切我认为我可以通过快照依赖项和确保构建重用来实现。但我不能让它工作。
我有以下工作:
- Build1 - 包 artifact1
- Build2 - 打包 artifact2
- Deploy1 - Dev - 对 Build1 的快照依赖,部署 artifact1
- Deploy2 - Dev - 对 Build2 的快照依赖,部署 artifact2
- 测试 - 开发 - 针对开发系统运行测试。具有快照依赖项的源代码触发器
- Deploy1 - QA - 将 artifact1 部署到 QA
- Deploy2 - QA - 将 artifact2 部署到 QA
- Deploy - QA - 用作触发快照依赖项的触发器 Deploy1/2 - QA
如果问题出现,则围绕 QA 部署的第二部分。它最终不得不有点落后,因为理想情况下我只是在它通过“测试 - 开发”运行到“部署 - QA”位之后升级一个构建,然后触发 Deploy1 和 Deploy2 进行 QA。但是,如果自上次 QA 版本以来我只将新版本的 Build1 部署到 Dev,我不想将 Build2 重新部署到 QA。所以我不想只触发“Deploy2 - QA”。理论上,通过手动触发“Deploy - QA”,它应该回顾依赖关系并重新使用最后一个“Deploy2 - QA”,因为它没有改变并且只触发“Deploy1 - QA”。但是,我每次都会触发 QA 部署作业。如下图所示:
如上所示,Test - Dev 触发了 VCS 更改并正确重用了 Build2 和“Deploy2 - Dev”构建。
但是,在点击“部署 - QA”上的“部署”按钮后,它确实触发了构建“Deploy2 - QA”,该构建具有完全相同的提交和构建号传递给它的先前构建。我希望那个构建不要触发。我只是无法弄清楚它为什么会这样做。
如果有人能解决这个问题,那就太好了。但理想情况下,我想要一些输入是一个更好的模式,因为我真正想要的是一个条件构建,如果参数与上次相同,请不要运行!必须是更简单的方法吗?
解决方案
推荐阅读
- python - googletranslator“无法解码任何 JSON 对象”
- angular - 具有多部分表单的 Angular 6 后请求不包括发布的对象的附件
- c# - 乘以并显示现有控件 C#
- php - 将 PDO 与 php 一起使用
- php - 使用 html 元素创建 pdf 文件以在 php 和 codeigniter 中生成发票的可能选项
- java - 在 Ubuntu 上创建文件夹并在 Tomcat 中部署战争
- c# - 将数据从 AuthorizationHandler 传递到 Controller
- java - 返回扩展抽象基类的具体类的类而不是实例?
- python - 如何退出 Pycharm '在控制台中运行文件'
- json - Laravel ajax 在选择选项之前发送 id