teamcity - 工件依赖性仅适用于触发构建的构建
问题描述
在 TeamCity 中,您可以设置Artifact Dependencies。这使您可以将另一个构建中的工件复制到当前构建中。
我正在尝试将其与打包构建一起使用。基本上,我有一堆创建容器的构建。容器构建完成后,我希望触发打包构建。打包构建将基于触发它的容器构建创建 Helm 图表。(我有权限和关注点分离的原因将其排除在容器构建之外。)
所以我进入了我的容器构建模板,并让它们输出包构建所需的东西作为构建工件(版本、容器映像名称等)。
然后,我在我的每个容器构建上使用 Artifact Dependencies 设置打包构建。这就是我观察到的情况:
- 运行其中一个容器构建。
- 它完成并保存了它的工件。
- 包构建上的触发器看到容器构建完成并触发包构建。
- 打包构建开始并将所有容器构建中的工件复制到其构建文件夹中。
- 混乱和悲伤,因为包构建不知道哪个构建导致它触发。
问题是当我运行容器构建时,它会将所有容器构建中的工件复制到包构建中。
如何仅从触发包构建的容器构建中获取信息(而不是所有依赖项?
解决方案
您不能:根据定义,工件依赖项是您需要的信息。
我不确定这是否回答了您提出的问题(或您没有回答的问题):这不是 TeamCity 和工件的工作方式。
这是“官方”的 TeamCity 方式:对于您的每个create-container
构建,写
- 一个
create-container
构建,配置了 VCS 但未触发 - 一个
package-container
构建,与- 配置相同的 VCS
- 一个 VCS 触发器(曾经在
create-container
构建中的那个) - 上的快照依赖
create-container
:这将确保此构建使用与之前版本相同的 VCS 版本create-container
运行 - 一个工件依赖于相应的
create-container
.
触发时,package-container
会等待对应的create-container
构建成功完成,然后运行。
如果同时运行不同package-container
的构建是一个问题:查看 TeamCity 的共享资源构建功能(创建并使用一个quota: 1
)。
至于package-container
构建:而不是复制构建 N 次,只需Action ..从第一个中提取模板并基于此创建 N-1 个其他模板。您需要更改每个依赖项,但如果您随后需要更改它们,只需对Template
遗嘱进行简单更改即可。
推荐阅读
- node.js - 我想使用 mongoose-gridfs 将图像上传到我的数据库。但我遇到了麻烦
- python - 如何找到给定长度的碱基对的频繁子序列
- android - 如何解决 Access denied find property "camera.aux.packagelist" 和 W/Gralloc3: allocator 3.x is not supported" 错误?
- json - bcp select with STUFF function to .json 格式
- android - Flutter:对话框上的“context!= null is not true”
- python - Airflow 中最新的唯一运营商和追赶者之间的区别
- c# - 在 .Net Core 3.1 安装后针对 .Net 2.2 构建失败并显示“无法加载文件或程序集 NuGet.ProjectModel”
- android - 如何以编程方式将 FacebookAds adView 添加到 Android 的屏幕顶部
- r - 如何在图例中显示所有实体?
- assembly - 汇编程序:初始化变量的问题