如何在Cloudbees Jenkins构建中使用grunt任务

5

我正在尝试在Cloudbees上搭建Jenkins构建。我已经成功安装了NodeJs并从BitBucket存储库中获取了我的源代码。我想在部署之前运行grunt任务来压缩和合并我的JS和CSS文件。但是,即使它已成功安装,我也无法运行grunt程序。以下是我的构建脚本:

curl -s -o use-node https://repository-cloudbees.forge.cloudbees.com/distributions/ci-addons/node/use-node
NODE_VERSION=0.8.0 \
 source ./use-node
npm install
npm install grunt
grunt

我曾尝试使用-g选项安装grunt,但无法成功。这是我的构建过程中与grunt有关的控制台输出:

+ npm install grunt
...
npm http GET https://registry.npmjs.org/grunt
npm http 200 https://registry.npmjs.org/grunt
...
grunt@0.4.0 node_modules/grunt
├── dateformat@1.0.2-1.2.3
├── colors@0.6.0-1
├── hooker@0.2.3
├── eventemitter2@0.4.11
├── which@1.0.5
├── iconv-lite@0.2.7
├── coffee-script@1.3.3
├── lodash@0.9.2
├── nopt@1.0.10 (abbrev@1.0.4)
├── rimraf@2.0.3 (graceful-fs@1.1.14)
├── minimatch@0.2.11 (sigmund@1.0.0, lru-cache@2.2.2)
├── glob@3.1.21 (graceful-fs@1.2.0, inherits@1.0.0)
├── findup-sync@0.1.2 (lodash@1.0.1)
└── js-yaml@1.0.3 (argparse@0.1.12)
+ grunt
/tmp/hudson3382014549646667419.sh: line 8: grunt: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE

有关如何让这个工作,有什么想法吗?Cloudbees上是否可能实现?

我认为 nom install -g grunt 可能有效 - 但让我在下面复制并确认一下... - Michael Neale
2个回答

5

Grunt现在被拆分成了一个单独的cli模块,令人烦恼的是这个cli模块并不包含grunt本身。

为了使其工作:

curl -s -o use-node https://repository-cloudbees.forge.cloudbees.com/distributions/ci-addons/node/use-node
NODE_VERSION=0.8.0 \
 source ./use-node
npm install
npm install grunt
npm install grunt-cli
export PATH=$PATH:node_modules/grunt-cli/bin/
grunt

如果这个改变的人能够让它更合理,那么将来可能会发生变化。
文档在这里:http://gruntjs.com/getting-started

谢谢,这帮我跨过了这个障碍。有点尴尬的是,答案就在GruntJs的入门页面上。 - Brady Isom
1
这是一个好问题 - 很高兴能在这里讨论,因为我肯定会忘记!我本来想看看grunt的。另外 - 这是最近的一个改变。直到最近你拥有的几乎可以工作,但自grunt 4以来就不再如此幸运了。祝你好运! - Michael Neale
很想听听你在grunt.js方面的进展 - 我正在考虑将一些clickstarts从bash切换到它,以便执行某些任务。 - Michael Neale
到目前为止,我非常喜欢Grunt。虽然我还没有做过什么非常复杂的事情,但是我用它做的事情都很顺利。我主要是在生产环境中使用它进行缩小和合并。 - Brady Isom
1
我喜欢将grunt-cli与项目中使用的grunt版本分开的方法。这样可以在单台机器上拥有多个grunt版本。如果有js ready从属(node.js、phantomjs、npm以及一些全局安装的包,如grunt-cli、bower、testacular等),那就太好了。 - xavier.seignard
好主意...我会研究一下。通常我们不想把所有东西随时随地都放在一起,但加入一些JS元素是有意义的。 - Michael Neale

0

您可以从 Jenkins 作业设置一切,无需使用 SSH/命令行:

安装 Jenkins 插件

  • Git 插件 - 用于 Git
  • Git 客户端插件 - 用于 Git
  • Git 参数插件 - 用于 Git 标签
  • GitHub API 插件 - 用于 GitHub
  • NodeJS 插件 - 集成常见的 JavaScript 工具 NodeJS 和 npm

Git/Ant/Maven/NodeJS 安装

  • 转到 SERVER/jenkins/configure

Git
  • Git -> Git 安装 -> 添加 Git -> JGit
  • Git 插件 -> 全局配置 user.name 值 = "Anthony Mckale",全局配置 user.email 值 = "anthony.mckale@bskyb.com"

NodeJS
  • NodeJS -> NodeJS 安装 -> 添加 NodeJS -> 名称 = "NodeJS 0.11.10",选中“自动安装”,选择“从 nodejs.org 安装”,将 "grunt-cli" 添加到全局安装包中

TADA

希望您可以使用git/nodejs和grunt

有关如何将grunt/node任务添加到jenkins作业的更多详细信息,请参见插件wiki -> https://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin

这真的很容易 :)

无需ssh登录,只需jenkins管理员权限


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接