如何使用Jenkins在同一个Maven反应堆构建中发布npm和maven?

3
有没有一种方法可以在Jenkins作业中使用一个Maven2反应堆构建pom文件发布到npm和maven存储库?反应堆构建pom文件包含两个模块,一个是标准的jar模块,另一个是pom模块,它使用exec插件调用npm脚本目标来构建javascript项目。当构建成功时,Jenkins被配置为将maven依赖项发布到公司nexus服务器。
项目布局:
project/
  pom.xml
  npm-module/
    pom.xml
  mvn-module/
    pom.xml 

这对于mvn-module和npm-module的构建非常有效。但现在的问题是如何发布npm-module。Jenkins似乎只允许一个发布到nexus的后构建任务。
有没有办法解决这个问题?有人能解释一下如何设置Jenkins和反应堆构建pom文件,以将npm和maven模块都发布到nexus吗?

更新:我用 https://github.com/eirslett/frontend-maven-plugin 替换了 exec 插件,它使得 npm、gulp 和 grunt 在 maven 中成为一等公民,但是我仍然不知道如何在 "jenkins 发布到 maven 仓库" 的构建步骤中同时发布 npm 构件。 - Doug
1个回答

3
我可以帮您进行翻译。这段文本是:“我有一个答案,但很想听听其他的想法。”
“Jenkins设置”
  • create pre step "execute shell" to set npm _auth and email fields

    npm config set _auth authhashstring  
    npm config set email some@email.com  
    
  • add deploy to the maven "goals and options"

    clean deploy -Dmaven.test.failure.ignore=true -Dfullclean=true  
    
  • add "settings file from filesystem"

    config/maven-settings.xml  
    
注意:使用部署目标而不是jenkins的“部署工件到maven”后续步骤,因为它不使用maven,所以您的npm目标不会被调用。

pom.xml设置

在npm-module/pom.xml中使用frontend-maven-plugin,并添加执行安装node/npm和npm发布的操作。确保将发布附加到部署阶段。instructions足够好。或者,您可以使用exec插件在部署阶段执行npm publish命令。

在mvn-module/pom.xml中添加distributionManagement/snapshotRepository,指定快照库位置。

maven settings.xml设置

我们将带有用户名和密码的maven settings.xml文件放置在项目中的config目录中,如mvn-module/config/maven-settings.xml。虽然这并不理想,但我们可以用可以从maven/jenkins设置的属性替换用户名和密码。Jenkins将配置从此位置读取此文件。

package.json设置

在npm-module/package.json中添加publishConfig/registry条目。

"publishConfig": {
    "registry": "url/nexus/content/repositories/npm-snapshots/"
}

Nexus设置

npm-snapshots托管的存储库已设置为允许重新部署。这可能不是一个好主意,但对于正在进行的新开发(显然不适用于发布),这可能已经足够了,我只是试图使堆栈工作。现在我需要解决问题。

因此,在澄清了这一点之后,现在Jenkins构建将使用顶级多模块反应堆POM从一个Jenkins作业发布Java和Node模块到各自的存储库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接