我有一个Jenkins自由式构建,基于使用SBT的Scala项目.我正在尝试使用Jenkins Artifactory插件将生成的工件发布到Artifactory存储库,特别是在artifactoryonline.com上托管的存储库.但是,我很难找到一个理智的配置.我倾向于怀疑有一些我缺少的东西,但是我的机智已经结束了,我发现的任何文档似乎都没有详细介绍这个用例,而且我已经厌倦了Artifactory插件源代码.任何帮助都表示赞赏.
场景如下.我想要:
以下是我尝试过的方法.
第一种方法是使用自由式构建,然后使用Generic-Artifactory集成.对于"已发布的工件",我已将其设置为
目标/阶-2.11/*=> com.mycompany/MY-module_2.11
构建成功,jar和sources-jar以及javadoc-jar和ivy文件以及POM文件都在该目录中生成.但是,发布失败,209冲突.Artifactory日志不喜欢目标路径:
发送HTTP错误代码409:目标部署路径'com/mycompany/my-module_2.11/my-module_2.11-1.0.6.pom'与POM的预期路径前缀'com/mycompany/my-module_2不匹配. 11/1.0.6' .请验证您的POM内容是否正确,并确保源路径是有效的Maven存储库根路径.
我可以通过不使用标准的maven-2路径(其中包括需要禁用此repo的POM一致性检查)来消除209错误,这表明我必须更新所有下游配置才能够与这个回购合作.
我可以更新插件的目标路径设置以包含版本号:
目标/阶-2.11/*=> com.mycompany /我的-module_2.11/1.0.6
但这意味着我已经为每个版本修改了我的Jenkins构建,这似乎打败了目的.我无法想象这是使用这些工具的正确方法.
在这种情况下,我坚持使用自由式SBT构建.在"构建环境"下,我选择了"Maven3-Artifactory Integration".我针对我的全局工件存储库配置了插件,选中"将工件部署到Artifactory",并将"包含模式"设置为
目标/斯卡拉-2.11/*
我运行了一个构建,它生成了工件(包括目标/ scala-2.11目录中的POM和ivy.xml文件),但是在工件的部署方面似乎没有发生任何事情.Artifactory日志中没有任何内容,没有新的构建,控制台输出或Jenkins日志中没有任何内容表明它曾尝试将任何工件部署到我的存储库.
在这种情况下,我坚持使用自由式构建,但在"构建环境"下,我选择了"Ant/Ivy-Artifactory Integration".我选择了全局配置的Artifactory存储库,选中"将工件发布到Artifactory"和"使用Maven兼容模式".我将我的SBT项目配置为"publishLocal"(根据插件说明),并设置了常春藤配置的以下路径截图.构建项目并将工件部署到〜/ .ivy2/local,但显然插件没有拦截,没有任何东西被推送到我配置的Artifactory仓库(也许这个插件与自由风格不兼容?)
我修改了SBT构建来做"发布"而不是"publishLocal",希望插件能够启动并拦截Ivy发布,但是因为我的built.sbt没有配置了publishTo存储库目标,所以我自然得到了一个错误"未指定用于发布的存储库".
下一步方法:跳过通用,转到完整的maven.我在一个Maven项目Jenkins中设置了一个新版本.它有一个预构建步骤,它运行我的SBT构建,生成pom工件以及二进制和源jar.然后我配置Build步骤以使用由我的SBT构建生成的POM.不幸的是,jenkins/maven插件的"Root POM"参数不接受通配符,所以我能够处理它的唯一方法是指定完整(版本化)路径:
目标/斯卡拉2.11/MY-resource_2.11-1.0.6.pom
所以,这是不幸的,也是站不住脚的,因为每次增加版本号时我都不愿意更新我的Jenkins构建版本.不过,我想看看这种方法是否有效,所以我继续推进.我在全局配置的Artifactory中添加了"将Artifacts部署到Artifactory"的构建后步骤.随着maven目标"帮助:帮助",没有任何东西被推动,因此maven拦截器没有任何东西可以拦截并推动我的神器(这是我对它如何工作的理解,无论如何).所以我再次尝试,用"部署"替换Build步骤中的maven目标.这一次,拦截器将我的大多数(全部?)依赖项推送到我的Artifactory服务器.但是,在推送所有依赖项之后,它显然未能尝试编译我的"maven"项目.我没有'
再一次,任何帮助表示赞赏.看起来这应该是一个相当主流的用例,Artifactory插件的文档明确指出支持自由式build + Maven部署,但我显然遗漏了一些东西.任何帮助是极大的赞赏!谢谢.