Maven을 통해 Jenkins에서 성능 문제/NPM 버그 (?)가 발생했습니다.Maven의 NPM Jenkins의 Build는 모듈의 재귀 (self-) 패키징으로 인해 오래 걸립니다.
- 필요한 경우 (예 : 꿀꿀-CLI) NPM을 통해 설치
- 설치
- 이 빌드 도구 NPM 종속성을 설치) (노드에게 & NPM을 설치 에) https://github.com/eirslett/frontend-maven-plugin 사용 :
내가 무엇을하고 오전 프로젝트의 특정 위치에 npm 의존성 (예 : jquery)을 지정합니다 (--global & --prefix 모두 사용)
- JS depndencies를 수정/추가하기 위해 oject의 WAR
로컬 빌드 (Windows)에서는 Jenkins (Linux) & 4-5 분에 동일한 빌드가 약 30 분 걸립니다.
3 단계 동안 nhpm은 실제로 somehting을 가져 오기 전에 오래 걸리는 것처럼 보입니다 (자세한 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 단계 설치 실제 프로젝트 종속성
<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/
빌드 -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"
}
}