2017-12-13 6 views
0

Maven経由でJenkinsのパフォーマンス問題/ NPMバグ(?)に直面しています。MavenのNPM Jenkinsのビルドは、モジュールの再帰的(自己)パッケージ化のために永遠にかかります

私は何をやっている: へ

  1. https://github.com/eirslett/frontend-maven-pluginを使用する)はノード& NPM(必要な場合)
  2. インストールをインストールNPM経由でビルドツールのNPMの依存関係(例えば作男-CLI)をインストールをインストールプロジェクトの特定の場所にnpmの依存関係(例えばjquery)を指定します(--global & --prefixの両方を使用)
  3. JS depndenciesをprに変更/追加するためにojectのWARは

同じビルドはジェンキンス(Linux)のローカル上の& 4-5minビルド(Windowsの場合)で約30分かかります。

ステップ3の間、npmは実際に何らかの影響を取り出す前に非常に長くかかるようです(ここでは詳細なnpm出力)。その間、NPMはpackage.tgzを作成しているようですが、Windows(local)ではpackage.jsonのみが含まれ、Linux(Jenkins)ではproject-Dependencies-package-nameの再帰コピーが次のような構造に含まれています。

package 
|-lib (+ package.json) 
    |-node_modules 
    |-project-Dependencies-package-name 
     |-lib (+ package.json) 
     |-node_modules 
      |-project-Dependencies-package-name 
      |-lib (+ package.json) 
       ... 

プロジェクトの依存関係パッケージ名のみを「モジュール」は、実際に発表されていないか、他の場所で使用されていることを決して、プロジェクトJSの依存関係を宣言するためpackage.jsonの存在することに注意してください。

[ERROR] npm verb addLocalTarball adding from inside cache /usr/local/tomcat/.npm/project-Dependencies-package-name/0.0.1/package.tgz 
[ERROR] npm verb correctMkdir /usr/local/tomcat/.npm correctMkdir not in flight; initializing 
[ERROR] npm verb afterAdd /usr/local/tomcat/.npm/project-Dependencies-package-name/0.0.1/package/package.json not in flight; writing 
[ERROR] npm verb correctMkdir /usr/local/tomcat/.npm correctMkdir not in flight; initializing 
[ERROR] npm verb afterAdd /usr/local/tomcat/.npm/project-Dependencies-package-name/0.0.1/package/package.json written 
[ERROR] npm info install [email protected] into /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib 
[ERROR] npm info installOne [email protected] 
[ERROR] npm verb installOne of project-Dependencies-package-name to /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib not in flight; installing 
[ERROR] npm verb correctMkdir /usr/local/tomcat/.npm/_locks correctMkdir not in flight; initializing 
[ERROR] npm verb lock using /usr/local/tomcat/.npm/_locks/compassDienste-Dependenc-39458a7b01736484.lock for /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib/node_modules/project-Dependencies-package-name 
[ERROR] npm verb unbuild lib/node_modules/project-Dependencies-package-name 
[ERROR] npm info preuninstall [email protected] 
[ERROR] npm info uninstall [email protected] 
[ERROR] npm verb unbuild rmStuff [email protected] from /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib/node_modules 
[ERROR] npm info postuninstall [email protected] 
[ERROR] npm verb gentlyRm don't care about contents; nuking /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib/node_modules/project-Dependencies-package-name 

[ERROR] npm verb tar unpack /usr/local/tomcat/.npm/project-Dependencies-package-name/0.0.1/package.tgz 
[ERROR] npm verb tar unpacking to /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib/node_modules/project-Dependencies-package-name 
[ERROR] npm verb gentlyRm don't care about contents; nuking /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib/node_modules/project-Dependencies-package-name 

[ERROR] npm verb write writing to /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib/node_modules/project-Dependencies-package-name/package.json 
[ERROR] npm info preinstall [email protected] 
[ERROR] npm verb readDependencies loading dependencies from /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib/node_modules/project-Dependencies-package-name/package.json 
[ERROR] npm verb readDependencies loading dependencies from /appl/tomcat-version/.jenkins/jobs/my-continous-build-workspace/workspace/my-project/src/main/javascript/dependencies/lib/node_modules/project-Dependencies-package-name/package.json 

コンフィグファイル:プロジェクト内のモジュールの

のpom.xml、プラグイン - > [実行]セクション

ステップ1インストールノード& NPM現在のマシンにインストールされていない場合は

<execution> 
    <id>install node</id> 
    <goals> 
    <goal>install-node-and-npm</goal> 
    </goals> 
    <configuration> 
    <nodeVersion>v4.6.0</nodeVersion> 
    </configuration> 
</execution> 

ステップ2 dev/build-tool依存関係をインストールする(gruntについては、下記参照)

<execution> 
    <id>npm install</id> 
    <goals> 
    <goal>npm</goal> 
    </goals> 
</execution> 

ステップ3ステップ4(ここでは上から罰金)フェッチされた依存関係を持つより多くの何かをする

<execution> 
    <id>install project js dependencies</id> 
    <goals> 
    <goal>npm</goal> 
    </goals> 
    <configuration> 
    <workingDirectory>src/main/javascript/dependencies</workingDirectory> 
    <arguments>install --production --global --prefix ./ --userconfig=.npmrc</arguments> 
    </configuration> 
</execution> 

実際のプロジェクトの依存関係をインストールし

<execution> 
    <id>grunt build</id> 
    <goals> 
    <goal>grunt</goal> 
    </goals> 
</execution> 

registry = https://nexus.company.tld/nexus/content/groups/company-npm/ 

.npmrcビルド-tools package.json

{ 
    "name": "build-tools", 
    "version": "0.0.1", 
    "devDependencies": { 
    "grunt-cli": "~1.0.1", 
    "grunt": "~0.4.5", 
    "autoprefixer": "^7.1.2", 
    "cssnano": "^3.10.0", 
    "grunt-contrib-concat": "^1.0.1", 
    "grunt-contrib-copy": "^1.0.0", 
    "grunt-contrib-jshint": "^0.10.0", 
    "grunt-contrib-sass": "^1.0.0", 
    "grunt-contrib-uglify": "^0.5.1", 
    "grunt-postcss": "^0.8.0", 
    "grunt-sass": "^2.0.0", 
    "pixrem": "^4.0.1" 
    } 
} 

プロジェクト依存パッケージ。JSON

{ 
    "name": "project-Dependencies-package-name", 
    "version": "0.0.1", 
    "dependencies": { 
    "some-internal-js-project": "1.1.2", 
    "tablesorter": "~2.18.4", 
    "bootstrap": "^3.3.7", 
    "html5shiv": "^3.7.3", 
    "jquery": "^3.2.1", 
    "jquery-dotdotdot": "^1.8.2", 
    "jquery-ui": "^1.12.1", 
    "jquery-ui-dist": "^1.12.1", 
    "popper.js": "^1.12.3", 
    "respond.js": "^1.4.2", 
    "tooltipster": "^4.2.5", 
    "bootstrap-sass": "^3.3.7" 
    } 

}

答えて

0

回避策:ステップ3の目標からのすべての引数を削除します。

手順2の成果物以外のフォルダ(「ビルドツールの依存関係」)以外のフォルダに「プロジェクト依存」NPM成果物を配置するには、他の目標(手順2)と異なる作業ディレクトリで十分です。

私はまだ何が間違っていたのか/私が間違っていたことを理解したいですか?

<execution> 
    <id>install compass js dependencies</id> 
    <goals> 
     <goal>npm</goal> 
    </goals> 
    <configuration> 
     <workingDirectory>src/main/javascript/dependencies</workingDirectory> 
    </configuration> 
</execution> 
関連する問題