首页 文章

如何使用jenkins在相同的maven reactor构建中发布npm和maven

提问于
浏览
2

有没有办法使用一个Maven2 reactor构建pom文件发布到Jenkins作业中的npm和maven存储库? reactor构建pom文件包含两个模块,一个是标准jar模块,另一个是pom模块,它使用exec插件调用构建javascript项目的npm脚本目标 . Jenkins配置为在构建成功时将maven依赖项发布到公司nexus服务器 .

项目布局:

project/
  pom.xml
  npm-module/
    pom.xml
  mvn-module/
    pom.xml

这适用于mvn-module和npm-module构建 . 但现在的诀窍是发布npm-module . Jenkins似乎只允许一个发布到nexus post-build任务 .

有没有办法做到这一点?任何人都可以解释如何设置Jenkins和反应堆构建pom文件,将npm和maven模块发布到nexus?

1 回答

  • 2

    我有一个答案,但很想听到其他的想法 .

    Jenkins Setup

    • 创建预执行“执行shell”以设置npm _auth和电子邮件字段

    npm config set _auth authhashstring
    npm config设置电子邮件some@email.com

    • 将部署添加到maven“目标和选项”

    clean deploy -Dmaven.test.failure.ignore = true -Dfullclean = true

    • 添加“文件系统中的设置文件”

    配置/行家-settings.xml中

    注意:使用部署目标而不是jenkins“部署工件到maven”post post,因为它不使用maven所以你的npm目标不会被调用 .

    pom.xml Setup

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

    在mvn-module / pom.xml中,为快照仓库位置添加distributionManagement / snapshotRepository .

    maven settings.xml Setup

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

    package.json Setup

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

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

    Nexus Setup

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

    因此,除了这个警告之外,现在jenkins构建将使用顶级多模块reactor pom从一个Jenkins作业将java和节点模块发布到它们各自的存储库 .

相关问题