node.js - Jenkins-Publish over SSH 插件:在 npm 上出现错误
问题描述
我正在尝试使用 Jenkins 为我的 node.js 应用程序设置 CI/CD 管道。
我想要做的是通过jenkins登录到我的应用程序服务器,并在通过ssh插件发布的帮助下执行服务器上的命令(https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+插件)。
我选择了该Send Files or Execute commands over SSH
选项并在部分中添加了以下命令Exec command
。
cd <project-folder> && git pull origin master && npm install
我收到一个错误,npm not found
但我尝试直接在服务器上没有错误。
所以我相信詹金斯存在许可问题,但我找不到解决方案
解决方案
是的,您正确识别了问题......它的权限问题..我假设您已经在 jenkins 的“配置系统”部分的“SSH 远程主机”中添加了 root 登录详细信息。
- 首先通过 github 中的 web hook 设置将 GIT repo 拉到 jenkins 工作区。希望您也成功完成了这一步
在“构建环境”中选择“使用 ssh 在远程主机上执行 shell 脚本”,然后使用以下命令
cd <project-folder> (Ex: cd /var/lib/jenkins/workspace/<project-folder>)
npm install
注意:您应该在服务器中提供完整的服务器路径以避免权限.. 如果您使用的是 localhost,那么当您使用“使用 ssh 在远程主机上执行 shell 脚本”时它可能会起作用并且其他非常重要的,您应该通过 root 用户访问仅不使用 cpanel 帐户登录。这将避免权限问题。
安装 NPM 后,检查控制台日志是否“成功”然后执行其他命令并建议删除“npm install”,因为多次安装会增加应用程序编译时间。
推荐阅读
- visual-studio-2017 - Visual Studio 2017 产品密钥
- vba - 为什么我在这里收到类型不匹配错误?
- r - 在R中将csv转换为netcdf
- java - 如何在范围报告中捕获所有测试用例?
- c# - How to fix stored procedure expects return parameter which was not supplied in C#?
- django - Retrieve Django hidden MultipleChoice form field value
- r - 不同层和几个netcdf文件的平均值与R
- ios - 呈现的 UIViewController 不能呈现 UIAlertController
- java - 测试后运行 Dataprovider
- firebase - Detected an object of type "Timestamp" that doesn't match the expected instance