我们正在使用 TeamCity 服务器和 OctoPack 为多个部署环境构建包。问题是 tentacle 代理选择了最新版本的包,所以它是部署在所有环境中的相同(最新)包。这是我们设置的摘要:
- 环境 DEV 和 STAGE;
- 部署到 DEV 是从 Git "dev" 分支触发的;
- 从 Git “stage” 分支触发部署到 STAGE;
- OctoPack 被配置为生成包 MyProduct.1.0.0.dev-%build_counter% 用于 DEV 构建配置;
- OctoPack 配置为生成包 MyProduct.1.0.0.%build_counter% 用于 STAGE 构建配置;
- TeamCity 配置为通过其 NuGet 源公开 OctoPack 人工制品(NuGet 包);
- Octopus 项目配置为使用来自 TeamCity NuGet 源的 NuGet Id MyProduct 部署包。
所以发生的情况是,由于 DEV 构建运行更频繁,它们具有更大的 %build_counter%,并且 STAGE 没有机会部署自己的包 - Octopus 触手更喜欢带有 1.0.0.dev-* 后缀的包.
这一定是相当普遍的情况,但我还没有找到一种简单的方法来解决它。