17

在我的 Jenkins 工作中,我想使用 Grunt 构建一个 JavaScript 应用程序。Jenkins 构建脚本创建一个构建目录(如果它不存在),更改该目录并运行:

npm install grunt
npm install grunt-zip
grunt --gruntfile=[something]

(当然grunt-cli是全局安装的。)当我构建作业时,第一条语句会导致 Grunt 和依赖项按预期被拉下。但是,该作业随后成功终止:

Archiving artifacts
No emails were triggered.
Finished: SUCCESS

第二个npm install不运行。知道为什么脚本在运行后终止npm install而不是继续执行后续语句吗?

4

3 回答 3

48

所以事实证明这npm是一个批处理文件,而不是可执行文件,因此需要使用callJenkins 脚本调用它:

call npm install grunt
于 2013-05-31T13:02:17.377 回答
1

我建议不要使用本地 grunt / nodejs 安装,而是让 jenkins 为您执行此操作!

它更容易,意味着与系统特定安装和变量的耦合更少。

脚步:

a) 使用 nodejs jenkins 插件 + 让它在机器/grunt-cli 上安装 nodejs -> Jenkins 与 Grunt 集成

b) 使用所需的任何 nodejs 依赖项填充您的 package.json,例如 grunt/grunt-zip 等

c) 运行 grunt 时,只需在“grunt”命令之前执行“npm update”

这样你就不用显式安装 npm,它都是从你的 package.json 配置的,你的构建脚本会不那么脆弱,你的开发人员可以使用与构建服务器相同的步骤,例如“npm update;grunt”本地相同构建服务器

于 2014-02-25T14:34:29.833 回答
0

对于未来的谷歌人:

为此使用命令链接。

这有效: npm install && npm install install grunt-zip

这不起作用: npm install npm install grunt-zip

于 2020-01-10T13:13:54.393 回答