My Jenkinsfile 设置在两个目录 github 存储库的根目录下,旨在为 Docker 容器内的两个子目录(dir "frontend" 和 dir "backend"( 安装(npm install( 包。Dir bakcend,一个Nestjs应用程序,安装没有错误。Dir 前端,一个角度应用程序,在 npm 安装过程中出错,并给出以下错误:"npm WARN tar ENOENT:没有这样的文件或目录...">
root
-dir backend (nestjs server)
-dir frontend (angular app)
-Jenkinsfile
詹金斯文件狙击:
pipeline {
agent {
docker {
image 'node:alpine'
args '-p 20001-20100:3000'
}
}
stages {
stage('Build') {
steps {
dir('frontend') {
sh 'npm install' <<<THIS ERRORS
echo "install frontend end"
}
dir('backend') {
sh 'npm install' <<<THIS WILL NOT ERROR
echo "install backend end"
}
}
}
etc...
"前端"npm install
将导致错误。如果我颠倒顺序并将"后端"步骤放在第一位,它将安装后端包而不会出错。
我有另一个带有类似角度应用程序的 Jenkinsfile,它可以毫无错误地安装、构建和部署,所以我不认为这是一个角度/CLI 问题。
命令npm install
需要一个pacage.json文件,该文件在角度应用程序中不可用,因此它在角度侧给出错误,而在节点侧,package.json
文件已经存在,因此在节点端,它成功运行。
要在角侧运行命令,首先需要运行命令npm init
然后可以 rum 命令npm install
。
在角侧
Step 1 ) npm init
step 2 ) npm install
这将解决您的问题。
我最终从node:alpine切换到node:late,这允许npm安装完成。