构建提升:你如何管理依赖关系?
Build promotion: how do you manage dependencies?
我正在尝试了解将我们的 java 项目从 Snaphot/Release 政策转换为推广政策的所有影响。
一个明显的步骤是每个构建最终都会创建一个可能会一直进入生产环境的工件,因此不再有快照。但是,我应该如何管理从一个项目到其他工件的 link,这些工件可能允许也可能不允许进入生产?
我很难找到关于这个特定主题的有价值的信息。当然,build promotion 被谈论了很多,但是从迁移到 build promotion 的依赖管理很少见。
我看到两个选择:
- 只能依赖之前已经提升到生产环境的工件
- 当一个工件依赖另一个工件时,构建的工件只能转到其依赖项的最后一个环境。也就是说,如果我依赖于允许进行测试而不是生产的工件,那么我的构建将不会被允许进行生产
是否有关于此主题的行业标准?或最佳做法?
非常感谢您的帮助:)
编辑:
我们将三种工件部署到 Artifactory:
图书馆
EARs
EAR 中的模块。其中一些是 "public" 层,任何想要与当前构建的 EAR
交互的 EAR 都需要这些层
我们将 EAR 部署到 JEE 服务器。我们的库和 public 层部署到 Artifactory 并打包在 EAR 中,因此它们不会直接部署在 JEE 容器上。
一个项目构建多个模块,所有内容及其依赖项都打包在一个 EAR 中。一个项目可以依赖于另一个项目的模块,这就是它变得复杂的地方......
我们区分"deployable artifacts"和"libraries"。
可部署的工件(如 ears、wars、standalone jar)通过一个管道,因此它们在不同的步骤中被提升和测试。它们不能是任何其他工件的依赖项。
另一方面,图书馆未提升。当它们被构建时(作为发布版本),可以立即作为所有其他工件的可能依赖项使用(发布构建包括单元测试和一些集成测试)。当它们用于可部署工件时,它们会被间接测试和推广。
我正在尝试了解将我们的 java 项目从 Snaphot/Release 政策转换为推广政策的所有影响。
一个明显的步骤是每个构建最终都会创建一个可能会一直进入生产环境的工件,因此不再有快照。但是,我应该如何管理从一个项目到其他工件的 link,这些工件可能允许也可能不允许进入生产?
我很难找到关于这个特定主题的有价值的信息。当然,build promotion 被谈论了很多,但是从迁移到 build promotion 的依赖管理很少见。
我看到两个选择:
- 只能依赖之前已经提升到生产环境的工件
- 当一个工件依赖另一个工件时,构建的工件只能转到其依赖项的最后一个环境。也就是说,如果我依赖于允许进行测试而不是生产的工件,那么我的构建将不会被允许进行生产
是否有关于此主题的行业标准?或最佳做法?
非常感谢您的帮助:)
编辑: 我们将三种工件部署到 Artifactory:
图书馆
EARs
EAR 中的模块。其中一些是 "public" 层,任何想要与当前构建的 EAR
交互的 EAR 都需要这些层
我们将 EAR 部署到 JEE 服务器。我们的库和 public 层部署到 Artifactory 并打包在 EAR 中,因此它们不会直接部署在 JEE 容器上。
一个项目构建多个模块,所有内容及其依赖项都打包在一个 EAR 中。一个项目可以依赖于另一个项目的模块,这就是它变得复杂的地方......
我们区分"deployable artifacts"和"libraries"。
可部署的工件(如 ears、wars、standalone jar)通过一个管道,因此它们在不同的步骤中被提升和测试。它们不能是任何其他工件的依赖项。
另一方面,图书馆未提升。当它们被构建时(作为发布版本),可以立即作为所有其他工件的可能依赖项使用(发布构建包括单元测试和一些集成测试)。当它们用于可部署工件时,它们会被间接测试和推广。