[英]Jenkins with Maven and npm process fails with EAGAIN error during npm install
所以我为一个使用 spring boot 作为后端和 vuejs 作为前端的应用程序设置了 jenkins 管道。 maven 构建过程首先构建前端,将其复制到后端,然后构建后端。 但是在前端的构建过程中,只有当我通过詹金斯管道运行它时,这个过程才会失败。 (对于其他人来说,相同的管道显然可以在不同的机器上工作)
[INFO] npm ERR! code EAGAIN
[INFO] npm ERR! syscall spawn sh
[INFO] npm ERR! path /var/lib/jenkins/workspace/pipeline/frontend/node_modules/pre-commit
[INFO] npm ERR! errno -11
[INFO] npm ERR! spawn sh EAGAIN
[INFO] npm ERR! command sh -c node install.js
[INFO]
[INFO] npm ERR! A complete log of this run can be found in:
[INFO] npm ERR! /var/lib/jenkins/.npm/_logs/2022-07-22T09_11_43_478Z-debug-0.log
日志的相关部分在这里: https ://pastebin.com/ewp6zRcv
詹金斯管道是:
pipeline {
agent any
parameters {
gitParameter branchFilter: 'origin/(.*)', defaultValue: 'staging', name: 'BRANCH', type: 'PT_BRANCH'
}
tools {
maven "Maven"
nodejs "Node"
}
stages {
stage('Build') {
steps {
// Get some code from a GitHub repository
git branch: "${params.BRANCH}", url: 'https://github.com/TheExkaliburg/MoreFair'
// Run Maven on a Unix agent.
sh "mvn -Dmaven.test.failure.ignore=true clean package"
}
post {
success {
archiveArtifacts 'target/*.jar'
}
}
}
}
}
jenkins 安装在带有 ubuntu 20.04 的 linux 服务器上,项目本身可以在https://github.com/TheExkaliburg/MoreFair上找到,并且要构建的分支正在暂存
奇怪的是,EAGAIN 失败通常是“资源暂时不可用”。 失败。 以 root 或 jenkins 用户身份运行该进程可以正常工作,没有任何错误,我有足够的剩余磁盘空间,并且我的 ram 和 cpu 在构建过程中从未接近 100%
这也很奇怪,因为出现的错误并不总是相同的,fe
[INFO] - Building for production...
[INFO] node[80787]: pthread_create: Resource temporarily unavailable
[INFO] node:events:505
[INFO] throw er; // Unhandled 'error' event
[INFO] ^
[INFO]
[INFO] Error: spawn /var/lib/jenkins/workspace/MoreFairStaging/frontend/node/node EAGAIN
[INFO] at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
[INFO] at onErrorNT (node:internal/child_process:478:16)
[INFO] at processTicksAndRejections (node:internal/process/task_queues:83:21)
[INFO] Emitted 'error' event on ChildProcess instance at:
[INFO] at Process.ChildProcess._handle.onexit (node:internal/child_process:289:12)
[INFO] at onErrorNT (node:internal/child_process:478:16)
[INFO] at processTicksAndRejections (node:internal/process/task_queues:83:21) {
[INFO] errno: -11,
[INFO] code: 'EAGAIN',
[INFO] syscall: 'spawn /var/lib/jenkins/workspace/MoreFairStaging/frontend/node/node',
[INFO] path: '/var/lib/jenkins/workspace/MoreFairStaging/frontend/node/node',
[INFO] spawnargs: [
[INFO] '/var/lib/jenkins/workspace/MoreFairStaging/frontend/node_modules/thread-loader/dist/worker.js',
[INFO] 20
[INFO] ]
[INFO] }
或者
[7,371s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 1024k, guardsize: 0k, detached.
node 的版本是 16.16.0 和 npm 8.11; maven 在 3.8.6 上,java 17 用于 maven,java 11 用于 jenkins (2.346.2)
所以这个特定案例的问题是服务配置不允许产生更多任务
解决此问题的一种简单方法(经过一周的研究并尝试了各种事情)是systemctl edit jenkins
并添加到配置中
[Service]
TaskMax=500
数字可能会有所不同,但您可以通过systemctl show --property=DefaultTasksMax
找到默认值 165 还不够
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.