NodeJs Jenkins插件不适用于dockerfile代理

问题描述 投票:1回答:2

我正在尝试在Jenkins上使用NodeJs插件。我遵循NodeJs document,它的示例代码使用agent any

可以正常工作
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 = $ PATH :?也一样,但我也不知道nodejs的路径。

如何使NodeJS插件与dockerfile一起使用?

node.js jenkins jenkins-plugins
2个回答
1
投票

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


0
投票

谢谢弗雷德里克罗(Fredericrous)的回答。不幸的是,在我的系统中,无法修改dockerfile。但是从您的信息来看,>

NodeJS插件不会将自身注入到泊坞窗中。

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

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'
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.