2011-11-22 60 views
3

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

我的技术主管和我带领公司迈出了第一步,使用Ivy这样的依赖管理器来管理我们所有的JAR。我们已经建立了我们称之为“Ivy Repo”的地方,这是我们内部(由我们开发)JAR以及常用重用依赖项(Apache JAR,Spring等)的地方。

我们开始遇到问题,其中一个开发商将不得不做出改变我们的内部共享JAR(Commons.jar),然后运行之前的代码更改的<ivy:publish>已代码审查,致力于为SVN和建CI服务器。这种情况发生在开发人员正在研究某个项目中的错误修复或新功能时,但需要对Commons.jar等依赖项进行修改才能完成其任务。

因此,我们处于常春藤和SVN不同步的情况。

很明显,我们可以立即制定一个规则,即在没有先审查代码,提交并测试代码的情况下,不允许任何人发布。或者,我们可以完全禁止开发者发布。

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

也许像Artifactory或SonaType这样的工具值得研究,但我们都没有与他们的经验,它看起来并不像他们支持这些类型的业务规则。

简而言之:我们正在寻找一种方式,以防止过早JAR出版使出版始终是我们的标准code >>review >>commit >>CI >>deploy周期最后阶段。

在此先感谢!

回答

3

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

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

将两者结合起来让你的想象力发挥得淋漓尽致。

+0

谢谢noamt - 听起来像Artifactory是要走的路! – IAmYourFaja