詹金斯无法找到npm

ode*_*fla 10 linux node.js npm jenkins

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

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

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

npm i
Run Code Online (Sandbox Code Playgroud)

它有效.

现在,我安装了詹金斯.我正在尝试安装的Jenkins项目位于:

/var/lib/jenkins/workspace/test
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash
npm i
Run Code Online (Sandbox Code Playgroud)

与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
Run Code Online (Sandbox Code Playgroud)

如果我只写:

echo $PATH
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

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

$ PATH = /家/ myuser的/ .nvm /版本/节点/ v6.11.1 /箱

但仍然没有运气.

Den*_*and 13

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

pipeline {
  agent any

  tools {nodejs "nodejs"}

  stages {
    stage('Example') {
      steps {
        sh 'npm config ls'
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

字符串"nodejs"name您在global tool configuration


tut*_*tug 13

我一直在与这个斗争一段时间。终于找到了解决办法。从您的任务菜单中选择ConfigureBuild Environment选择Provide Node & npm bin/ folder to PATH您可以保留默认设置,你是好去。

在此处输入图片说明

正如 Eric Wang 在评论中指定的,NodeJS Plugin需要先安装这个选项才能出现:https : //wiki.jenkins.io/display/JENKINS/NodeJS+Plugin


Bam*_*ieh 9

只需安装nodeJS pluginfor jenkins,即可在此处找到它。

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

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


jenkins 2.x的更新

要进入jenkins 2.x的插件页面:

只需Manage Jenkins > Manage Plugins查看即可,Jenkins环境的管理员可以使用。- https://jenkins.io/doc/book/managing/plugins/

但是,我建议为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' 
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,这运行两个阶段,即为应用程序构建测试npm通过docker镜像安装node:6-alpine

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

  • 确定,我所缺少的是选中此复选框:“将Node&npm bin /文件夹提供给PATH”。当我这样做时,shell执行无错误。 (2认同)

小智 6

如果您使用的是管道。

  1. 安装 NodeJS Jenkins 插件
  2. 在全局工具配置 示例中配置节点安装
  3. 每当你想在管道中使用 npm 时,请使用:

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


uda*_*ddy 5

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

在此输入图像描述

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

tools {nodejs "NODEJS"}  //name should be similar to name used for installer in the global tool configuration.
Run Code Online (Sandbox Code Playgroud)

这对我有用。