【问题标题】:Synching Version Control & Artifact Repository同步版本控制和工件存储库
【发布时间】:2012-01-04 01:58:34
【问题描述】:

虽然我们是使用 SVN 进行源代码控制和使用 Apache Ivy 进行依赖管理的 Java 阵营,但这个问题广泛适用于任何平台/语言、SCM 和工件存储库工具。

我和我的技术主管率先迈出了公司使用 Ivy 之类的依赖管理器来管理我们所有 JAR 的第一步。我们已经建立了我们所谓的“Ivy Repo”,这是我们存放内部(由我们开发的)JAR 以及常用的依赖项(Apache JAR、Spring等)。

我们开始遇到这样的问题:开发人员必须对我们的内部 Commons JAR (Commons.jar) 进行更改,然后在代码更改经过代码审查、提交给 SVN 之前运行<ivy:publish>并从 CI 服务器构建。当开发人员在一个项目中处理错误修复或新功能时,会发生这种情况,但需要对 Commons.jar 等依赖项进行修改才能完成他们的任务。

因此,我们处于 Ivy 和 SVN 彼此不同步的情况。

显然,我们可以实例化一个规则,即在没有先与团队一起审查、提交和测试他们的代码的情况下,任何人都不得发布。或者,我们可以完全禁止开发者发布。

在采取任何一种方式之前(我们倾向于后者),我们想知道其他团队是否遇到过同样的问题,以及实施了哪些解决方案来防止这种情况发生。

也许像 Artifactory 或 SonaType 这样的工具值得研究,但我们都没有使用过它们的经验,而且看起来它们不支持这类业务规则。

简而言之:我们正在寻找一种方法来防止过早发布 JAR,以便发布始终是我们标准 code >> review >> commit > 中的最后阶段> CI >> deploy 循环。

提前致谢!

【问题讨论】:

    标签: svn version-control ivy dependency-management


    【解决方案1】:

    Artifactory 提供了细粒度的permission management,这对于控制谁可以部署什么以及部署到哪里很有用;例如,您可以创建一个规则,根据 jar 文件的名称\路径(即您的 Commons.jar)拒绝发布该 jar 文件,并将其应用于除有权批准它的用户之外的所有用户。

    如果您需要更大的灵活性,Artifactory 的专业版还有User Plugins feature,它基本上可以让您为 Artifactory 编写 groovy 插件,并为您提供丰富的上下文和不同操作的钩子。
    此外,Artifactory 的 properties metadata 允许您使用自定义标签来注释任何工件和文件夹,这些标签也可用于不同的条件。

    将两者结合起来,尽情发挥您的想象力。

    【讨论】:

    • 感谢 noamt - 听起来 Artifactory 是要走的路!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多