NodeJs Плагин Jenkins не работает с агентом dockerfile - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь использовать плагин NodeJs на Jenkins. Я следую 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?

Ответы [ 2 ]

1 голос
/ 24 января 2020

NodeJS плагин не внедрит себя в docker. Однако вы можете сделать аргумент ARG build в вашем dockerfile, для установки которого требуется версия nodeJS. Затем вам нужно будет прочитать nodejs step

0 голосов
/ 27 января 2020

Спасибо, fredericrous за ответ. К сожалению, в моей системе dockerfile не может быть изменен. Но из вашей информации, что плагин

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'
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...