詹金斯无法找到npm

时间:2017-08-28 07:41:54

标签: node.js linux jenkins npm

在这个linux服务器上,我有一个名为" myuser"的用户。 对于这个用户,当回显路径时,我得到了这个:

/home/myuser/bin:/home/myuser/.local/bin:/home/myuser/.nvm/versions/node/v6.11.1/bin:/usr/local/sbin:/usr/local/仓:/ usr / sbin目录:在/ usr / bin中:/ sbin目录:/ bin中:在/ usr /游戏:在/ usr /本地/游戏:/ SNAP / bin中

拥有节点应用程序,在手动部署时我运行:

npm i

它有效。

现在,我安装了Jenkins。我尝试安装的Jenkins项目位于:

/var/lib/jenkins/workspace/test

构建正在执行shell脚本。在那个窗口我输入了:

#!/bin/bash
npm i

与Jenkins一起建立时,我明白了:

[test] $ /bin/bash /tmp/jenkins756533162549346948.sh
/tmp/jenkins756533162549346948.sh: line 3: npm: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE

如果我只写:

echo $PATH
在Jenkins shell中,我得到了这个:

[test] $ /bin/sh -xe /tmp/jenkins5067097808572366507.sh
+ echo /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
[test] $ /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/6.11.1/bin/node /tmp/jenkins8733250738704177758.js
Finished: SUCCESS

如您所见,我安装了nodejs插件。 无论如何,当使用Jenkins shell时,找不到npm和even节点。 如何让Jenkins知道npm / node在哪里? 我试图先在shell中写这个:

$ PATH = /家庭/为myuser / .nvm /版本/节点/ v6.11.1 / bin中

但仍然没有运气。

8 个答案:

答案 0 :(得分:5)

只需为jenkins安装nodeJS plugin,就可以找到它here

安装插件后,重新启动jenkins,然后转到全局配置以指定版本。

配置的完整细节可以在上面链接的插件文档中找到。

jenkins 2.x更新

要访问jenkins 2.x中的插件页面:

  

只需转到Manage Jenkins > Manage Plugins视图,可供Jenkins环境的管理员使用。 - https://jenkins.io/doc/book/managing/plugins/

但是,我建议使用pipelines代替CI流程的插件:

管道是描述软件交付管道部分的说明

将此管道配置添加到jenkins上的node.js项目中以使其运行。

pipeline {
    agent {
        docker {
            image 'node:6-alpine'
            args '-p 3000:3000'
        }
    }
    environment {
        CI = 'true' 
    }
    stages {
        stage('Build') {
            steps {
                sh 'npm install'
            }
        }
        stage('Test') { 
            steps {
                sh './jenkins/scripts/test.sh' 
            }
        }
    }
}

正如您所看到的,它运行了两个阶段,为应用程序构建测试npm是通过泊坞窗图片node:6-alpine安装的。

Jenkins docs提供了通过CI构建nodejs应用程序的完整教程:https://jenkins.io/doc/tutorials/build-a-node-js-and-react-app-with-npm/

答案 1 :(得分:1)

在管道方案中,唯一对我有用的是添加

tools {nodejs“您的节点JS安装名称”}

安装Node JS插件并在 Manage Jenkins-> Global Tool Configuration 菜单中添加新配置。

答案 2 :(得分:0)

此线程中的答案并没有帮助我,帮助的是将node.js工具添加到我的Jenkinsfile中:

pipeline {
  agent any

  tools {nodejs "nodejs"}

  stages {
    stage('Example') {
      steps {
        sh 'npm config ls'
      }
    }
  }
}

其中字符串"nodejs"name中的global tool configuration

答案 3 :(得分:0)

在安装NodeJS后重启PC,Jenkins将看到npm

答案 4 :(得分:0)

使用nvm安装Node.js

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash

. ~/.nvm/nvm.sh

nvm install 4.4.5

node -v //4.4.5

此外,在je​​nkins中,管理Jenkins >>全局工具conf >> Node.js安装

答案 5 :(得分:0)

我已经为此战斗了一段时间。终于找到了解决方案。从作业菜单中选择Configure下的Build Environment,然后选择Provide Node & npm bin/ folder to PATH。您可以保留默认设置,一切顺利。

enter image description here

答案 6 :(得分:0)

如果您正在使用管道。

  1. 安装NodeJS Jenkins插件
  2. 在“全局工具配置”中配置节点安装 Example
  3. 每当要在管道中使用npm时,请使用:

    nodejs('<name of your Node installation>'){
    
       //here your npm commands p.e.
    
       npm install
       npm run prod
    }
    

答案 7 :(得分:0)

首先,进入Manage Jenkins/全局工具配置,如下配置nodejs安装程序。

enter image description here

现在转到 Jenkinsfile 并包含上述工具。

tools {nodejs "NODEJS"}  //name should be similar to name used for installer in the global tool configuration.

这对我有用。