gpt4 book ai didi

docker - npm install 在 docker 的 jenkins 管道中失败

转载 作者:IT老高 更新时间:2023-10-28 12:36:27 25 4
gpt4 key购买 nike

我正在学习有关 Jenkins 管道的教程,我可以在节点 6.10 docker 容器下获得一个“hello world”。

但是,当我将默认的 EmberJS 应用程序(使用 ember init)添加到存储库并尝试在管道中构建它时,运行 npm install 时它会失败(因为目录访问问题)。 Jenkins 文件可以在这里看到:https://github.com/CloudTrap/pipeline-tutorial/blob/fix-build/Jenkinsfile

构建打印的错误消息是(在本地安装并在 Macbook 上使用 java -jar jenkins.war 运行,不相关但以防万一)是:

npm ERR! Linux 4.9.12-moby
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v6.10.0
npm ERR! npm v3.10.10
npm ERR! path /.npm
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/.npm'
npm ERR! at Error (native)
npm ERR! { Error: EACCES: permission denied, mkdir '/.npm'
npm ERR! at Error (native)
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'mkdir',
npm ERR! path: '/.npm',
npm ERR! parent: 'pipeline-tutorial' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

注意:我想以 root/sudo 身份运行 npm install

更新:我已经能够取得如下一些进展:

我从日志中找到了 Jenkins 使用容器构建的命令:

[Pipeline] withDockerContainer
$ docker run -t -d -u 501:20 -w /long-workspace-directory -v /long-workspace-directory:/long-workspace-directory:rw -v /long-workspace-directory@tmp:/long-workspace-directory@tmp:rw -e

所以当 docker 镜像运行时,它的工作目录是 /long-workspace-directory (它实际上是一个看起来很神秘的 jenkins 工作空间路径),用户 ID 是 501(组 ID 20),等等。用户没有名字(这显然破坏了与这个问题无关的其他事情)。

  1. 将代理更改为使用 Dockefile:

    agent {
    dockerfile {
    filename 'Dockerfile'
    args '-v /.cache/ -v /.bower/ -v /.config/configstore/'
    }
    }
  2. 指定 args '-v ...' 为 npm install/bower 需要的目录创建卷。

最佳答案

添加环境并将主页设置为“。”解决这个问题如下。

pipeline {
agent { docker { image 'node:8.12.0' } }
environment {
HOME = '.'
}
stages {
stage('Clone') {
steps {
git branch: 'master',
credentialsId: '121231k3jkj2kjkjk',
url: 'https://myserver.com/my-repo.git'
}
}
stage('Build') {
steps {
sh "npm install"
}
}
}
}

关于docker - npm install 在 docker 的 jenkins 管道中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com