2016-04-12 26 views
9

Sto utilizzando la seguente immagine di finestra mobile jenkinsci/jenkins:2.0-rc-1 per provare jenkins 2.0 e la vista "pipeline".installazione del nodo su jenkins 2.0 utilizzando il plug-in della pipeline

Non riesco a installare il nodo. Ecco il mio script gasdotto:

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

La risposta quando viene eseguito è:

[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 

Ecco quello che ho provato:

  • le Jenkins NodeJS strumento (che funziona correttamente quando viene utilizzato con un lavoro freestyle)

  • accedere al contenitore docker e installare il nodo e manualmente, per lo stesso utente:

enter image description here

UPDATE:

Sulla risposta di Jesse Glick di seguito, ho aggiunto il risultato per i miei script 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' 
} 

risposta

16

In entrambi i

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

o

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

dovrebbe funzionare. Vedi JENKINS-28718 per ulteriori proposte.

Tra l'altro è possibile omettere il parametro type e basta usare

tool 'node-5.10.1' 

per brevità.

+0

grazie! strano che abbia iniziato a funzionare non appena è stato dichiarato? ho fatto un ulteriore passo aggiungendolo al percorso locale in modo da poter eseguire "nodo" più avanti nello script - aggiornerò la mia domanda ora – seanxe

+0

Ottima risposta, ma domanda di follow-up ... Come posso includere anche i pacchetti npm installati globalmente nel percorso? –

6

Per lavoro successivo codice:

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

nodejs5 è il nome dello strumento specificato nella configurazione di Jenkins.

+0

Non si desidera eliminare altre voci in '$ PATH'. –

+0

sì, mi dispiace rimuovere molto dal mio codice, deve essere: 'env.PATH =" $ {env.PATH}: $ {nodeHome}/bin "' aggiornerà la risposta –

1

Se si verifica un problema con questo problema su Jenkins in esecuzione su Windows. Effettuare quanto segue:

def nodeHome = tool 'Node.js 6.9.5' 
bat "\"${nodeHome}\"\\node.exe -v" 
bat "\"${nodeHome}\"\\npm -v"