我目前在Jenkins使用Maven时遇到性能问题/ NPM错误(?)。
我在做什么:
相同的构建在Jenkins(Linux)上花费大约30分钟,在本地构建(Windows)上花费大约4-5分钟。
在第3步中,npm似乎需要很长时间才能实际获取某些内容(此处有详细的npm输出)。在此期间,NPM似乎创建了一个package.tgz,它在Windows(本地)下只包含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)
...
请注意,project-Dependencies-package-name仅存在,因为package.json声明了项目JS依赖项,“模块”从未在其他地方实际发布或使用过。
[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安装实际的项目依赖项
<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>
步骤4使用获取的依赖项执行更多操作(从此处开始)
<execution>
<id>grunt build</id>
<goals>
<goal>grunt</goal>
</goals>
</execution>
.npmrc
registry = https://nexus.company.tld/nexus/content/groups/company-npm/
build-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"
}
}
项目依赖项package.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"
}
}
解决方法:从步骤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>