背景. 我们的组织使用Maven、Bamboo和Artifactory来支持连续集成流程。我们依靠Maven的SNAPSHOT限定符来帮助管理Artifactory中的存储(轮换掉旧的SNAPSHOT构建),并帮助保持跨团队的集成最新(Maven在每次构建时自动检查SNAPSHOT依赖项的更新)。
问题. 我们面临的一个挑战是如何在继续使用SNAPSHOT的同时,正确地将构建从环境推广到环境。假设测试人员将版本1.8.2-SNAPSHOT部署到功能测试环境,并且在Subversion中是1400版。还假设它通过了功能测试。当测试人员决定从Artifactory将1.8.2-SNAPSHOT拉入性能测试环境时,开发人员可能已经提交了Subversion的更改,因此Artifactory中的实际二进制文件处于不同的版本。我们应该如何确保在使用SNAPSHOT构建时版本不会在我们身下更改?
约束条件. 我们显然不希望无意识地部署不同的构建。我们也不想从源代码重新构建,因为我们想在性能测试中测试与功能测试中相同的二进制文件。
我们考虑的方法. 我们想要用第四个组件(如1.8.2.1400)标记版本,其中第四个组件是Subversion修订版号。 (附带问题是,是否有Maven插件或其他自动执行此操作的工具?)但如果我们这样做,那么基本上我们就失去了SNAPSHOT功能,因为Maven和Artifactory认为这些是不同的版本。
我们使用Scrum,因此我们很早就将其部署到测试环境中(例如第二天左右)。我认为在开发周期的那么早的阶段删除SNAPSHOT限定符是没有意义的,因为我们又失去了SNAPSHOT的好处。
希望知道其他组织如何解决此问题。