2016-04-12 2 views
9

Я запускаю следующее изображение докеров jenkinsci/jenkins:2.0-rc-1, чтобы опробовать jenkins 2.0 и «конвейер».установка узла на jenkins 2.0 с использованием плагина конвейера

Я не могу установить узел. Вот мой трубопровод сценарий:

node { 
    //tool([name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation']) 
    sh 'echo $(whoami)' 
    sh 'node -v' 
} 

Отклик, когда это работает является:

[ci] Running shell script 
+ whoami 
+ echo jenkins 
jenkins 
[Pipeline] sh 
[ci] Running shell script 
+ node -v 
/../durable-3b0b1b07/script.sh: 2: /../durable-3b0b1b07/script.sh: node: not found 

Вот что я пробовал:

  • Дженкинс NodeJS инструмент (который работает правильно, когда используется с заданием на фристайл)

  • войти в контейнер-докер и установить кивок е вручную, для одного пользователя:

enter image description here

UPDATE:

Опираясь на ответ Джесси Глика ниже, я добавил результат моих сценариев PATH:

node { 
    def nodeHome = tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation' 
    env.PATH = "${nodeHome}/bin:${env.PATH}" 
    sh 'npm install' 
} 

ответ

16

Либо

node { 
    withEnv(["PATH+NODE=${tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'}/bin"]) { 
    sh 'node -v' 
    } 
} 

или

node { 
    def nodeHome = tool name: 'node-5.10.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation' 
    sh "${nodeHome}/bin/node -v" 
} 

должен работать. См. JENKINS-28718 для получения дополнительных предложений.

Кстати, вы можете опустить параметр type и просто использовать

tool 'node-5.10.1' 

для краткости.

+0

спасибо! Странно, что он начал работать, как только он был объявлен? я сделал еще один шаг, добавив его в локальный путь, поэтому я мог просто запустить «узел» позже в скрипте - теперь я обновлю свой вопрос – seanxe

+0

Отличный ответ, но последующий вопрос ... Как я могу включить глобально установленные пакеты npm на пути? –

6

Для я работаю следующий код:

node(){ 
    def nodeHome = tool 'nodejs5' 
    env.PATH="${env.PATH}:${nodeHome}/bin" 
    ... 
    sh 'npm install' 
} 

nodejs5 - это имя инструмента, указанного в конфигурации Jenkins.

+0

Вы не хотите забивать другие записи в '$ PATH'. –

+0

yep, извините, удалите из моего кода, должно быть: 'env.PATH =" $ {env.PATH}: $ {nodeHome}/bin "' будет обновлять ответ –

1

Если кто-то случайно имеет дело с этой проблемой на Дженкинс работает на Windows. Выполните следующие действия:

def nodeHome = tool 'Node.js 6.9.5' 
bat "\"${nodeHome}\"\\node.exe -v" 
bat "\"${nodeHome}\"\\npm -v" 
Смежные вопросы