NodeJs Jenkins 插件不适用于 dockerfile agent



我正在尝试在 Jenkins 上使用 NodeJs 插件。我遵循 NodeJs 文档,它使用代理的示例代码工作正常

pipeline {
agent any
stages {
stage('Build') {
steps {
nodejs(nodeJSInstallationName: 'NodeJs test') {
sh 'npm config ls'
}
}
}
}
}

但是如果我像下面的代码一样使用 dockerfile 代理

pipeline {
options {
timeout(time:1,unit:'HOURS')
}
environment {
docker_image_name = "myapp-test"
HTTP_PROXY = "${params.HTTP_PROXY}"
JENKINS_USER_ID = "${params.JENKINS_USER_ID}"
JENKINS_GROUP_ID = "${params.JENKINS_GROUP_ID}"
}
agent {
dockerfile {
additionalBuildArgs '--tag myapp-test --build-arg "JENKINS_USER_ID=${JENKINS_USER_ID}" --build-arg "JENKINS_GROUP_ID=${JENKINS_GROUP_ID}" --build-arg "http_proxy=${HTTP_PROXY}" --build-arg "https_proxy=${HTTP_PROXY}"'
filename 'Dockerfile'
dir '.'
label env.docker_image_name
}
}
stages {
stage('Build') {
steps {
nodejs(nodeJSInstallationName: 'NodeJs test') {
sh 'npm config ls'
}
}
}
}
}

它将返回npm: 找不到命令错误。 我的猜测是,它找不到nodejs的路径...我想尝试导出路径=$PATH:??也是,但我也不知道 nodejs 路径。

如何使 NodeJS 插件与 dockerfile 一起工作?

NodeJS 插件不会将自身注入 docker 中。但是,您可以在 dockerfile 中创建一个ARGbuild 参数,该参数需要安装的 nodeJS 版本。然后,您需要阅读nodejs步骤

谢谢弗雷德里克鲁斯的回答。不幸的是,在我的系统中,无法修改 docker文件。但从您的信息来看,

NodeJS插件不会将自身注入到docker中。

我决定在另一个代理中运行 NodeJS 插件而不是 dockerfile(运行多个代理( 使用下面的代码,我设法成功运行它。

pipeline {
options {
timeout(time:1,unit:'HOURS')
}
environment {
docker_image_name = "myapp-test"
HTTP_PROXY = "${params.HTTP_PROXY}"
JENKINS_USER_ID = "${params.JENKINS_USER_ID}"
JENKINS_GROUP_ID = "${params.JENKINS_GROUP_ID}"
}
agent {
dockerfile {
additionalBuildArgs '--tag myapp-test --build-arg "JENKINS_USER_ID=${JENKINS_USER_ID}" --build-arg "JENKINS_GROUP_ID=${JENKINS_GROUP_ID}" --build-arg "http_proxy=${HTTP_PROXY}" --build-arg "https_proxy=${HTTP_PROXY}"'
filename 'Dockerfile'
dir '.'
label env.docker_image_name
}
}
stages {
stage('Build') {
steps {
sh 'ls'
}
}
}
}
stage('Test'){
node('master'){
checkout scm
try{
nodejs(nodeJSInstallationName: 'NodeJs test') {
sh 'npm config ls'
}
}
finally {
sh 'echo done'
}
}
}

最新更新