【发布时间】:2014-05-19 18:23:59
【问题描述】:
简而言之,我如何配置 jenkins 以在发生更改时将未发布的开源工件持续自动地发布到私有关系存储库?
加长版:
考虑一个我的代码依赖的开源项目,只有该项目不会将自身发布到任何存储库。因此,如果代码没有频繁更改,我可以手动克隆并发布到我的私人关系。问题是,开源项目变化太频繁,我不想手动跟踪项目状态。我想以某种方式在 jenkins 中创建一个工作,将开源项目构建并发布到我的私人存储库。该项目是一个 scala + sbt 项目,我的代码也是如此,所以我想发布 ivy 风格 而不是 maven 风格。
我对此的看法:
理想情况下,我会让 jenkins 运行操作:compile test publish-local,如果一切顺利,我将(以某种方式)发布生成的工件。但是:
- 我不知道如何(如果可能的话)使用 sbt(甚至 Ivy),就像我使用 maven 部署生成的 jar 一样。
- 我可以使用一个分叉的项目,修改后的
build.sbt将包括publishTo密钥,并引用我的.credentials并让jenkins 到compile test publish它到我的私人关系,但我必须git pull从原始存储库到我的分叉存储库的更改,我希望这能自动发生... - 我可以使用一个 hacky 解决方案,比如 jenkins 会运行 2 个不同的作业。第一个将由原始的 SCM 拉动触发,并执行一个脚本,将更改从原点拉到分叉的 repo(与上面的项目符号相同)。第二个作业将取决于第一个作业,并且每次执行第一个作业时都会触发。这项工作将构建和发布分叉的回购。但这个解决方案听起来太复杂和hacky。肯定有更简单的方法来做到这一点...
那么,处理这种情况的好方法是什么?
【问题讨论】: