Сборка Maven прошла успешно, хотя при развертывании npm произошла ошибка - PullRequest
1 голос
/ 13 июня 2019

Я пытаюсь развернуть npm module через exec-maven-plugin.Я использую инструмент nexus-npm из https://github.com/arkanjoms/nexus-npm.

В моем pom я выполняю его так:

<execution>
  <id>Deploy module via nexus-npm</id>
  <goals>
    <goal>exec</goal>
  </goals>
  <phase>deploy</phase>
  <configuration>
    <workingDirectory>${project.build.directory}/npm</workingDirectory>
    <executable>nexus-npm</executable>
    <arguments>
      <argument>deploy</argument>
    </arguments>
    <environmentVariables>
      <HOME>${project.build.directory}/npm</HOME>
    </environmentVariables>
  </configuration>
</execution>

Все работает нормально, но при неудачном развертывании сборка maven по-прежнемупомечен как успешныйКак я могу сказать maven, что сборка должна завершиться неудачей, если развертывание не было успешным?

npm ERR! publish Failed PUT 400
npm ERR! code E400
npm ERR! Repository is read only: npm-internal-snapshots : mypackage

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Apps\npm-cache\_logs\2019-06-12T11_02_39_129Z-debug.log
[default.js-info]: Rollback files.
[default.js-info]: Cleaning files.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:12 min (Wall Clock)
[INFO] Finished at: 2019-06-12T13:02:39+02:00
[INFO] Final Memory: 43M/396M
[INFO] ------------------------------------------------------------------------

Чтобы понять, почему я знаю, почему развертывание не выполняется, это не мой вопрос.Я хочу знать, как пометить сборку maven как сбой, когда в развертывании произошла ошибка.

1 Ответ

1 голос
/ 13 июня 2019

Плагин arkanjoms / nexus-npm использует app/publish-snapshot.js

publishSnapshot: function (snapshotRepository) {
    log.info('publish snapshot => ' + snapshotRepository);
    shell.exec('npm publish --registry=' + snapshotRepository);
},

Это означает shelljs/shelljs execкоманда не проверяет свой код возврата.

Это должно быть:

if (shell.exec('npm publish --registry=' + snapshotRepository).code !== 0) {
  shell.echo('Error: npm publish snapshot failed');
  shell.exit(1);
}

Аналогично, при вызове этого шага публикации снимка не ожидайте ошибки в app/commands.js

    deploy: function () {
        this.verify();
        this.backup();
        if (commander.release) {
            tag.createTag(this.appConfig, this.config.tag, this.message);
            release.publishRelease(this.appConfig.packageJson.distributionManagement.releaseRegistry);
            release.updatePkgVersion(this.appConfig, this.message);
            rollback.clean();
        } else {
            snapshot.addDateToVersion(this.appConfig);
            snapshot.publishSnapshot(this.appConfig.packageJson.distributionManagement.snapshotRegistry);
            rollback.rollback();
        }
    },

Поскольку текущая реализация плагина стоит, будет нелегко пометить сборку maven как сбой, когда в развертывании есть ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...