【问题标题】:Jenkins integration with GruntJenkins 与 Grunt 的集成
【发布时间】:2014-03-12 23:48:11
【问题描述】:

我已经在 Windows Server 2008 R2 上设置了 Jenkins v1.550。它现在作为http://localhost:8080 的服务运行。我以管理员身份登录机器。我已经安装了 Node.js 并且可以从命令行运行“npm”。

我还为 Jenkins 安装了 NodeJS 插件 v0.2.1。然后我进入 Jenkins 的配置系统部分,向下滚动到 NodeJS 安装,单击添加 NodeJS 按钮,将“NodeJS”作为名称,将“C:\Program Files\nodejs”作为安装目录的路径。当我在插件页面上读到它仅适用于 Linux 时,我没有检查“自动安装”选项。

然后我创建了一个新作业,单击“向 PATH 提供节点和 npm bin/文件夹”复选框,为“执行 Windows 批处理命令”创建了一个新的构建步骤,并输入了“node --version”和“ grunt --version" 并保存。

我运行了这项工作,这是输出 -

Building in workspace C:\Program Files (x86)\Jenkins\workspace\Test_1.0
[Test_1.0] $ cmd /c call C:\Windows\TEMP\hudson1381541243088903083.bat

C:\Program Files (x86)\Jenkins\workspace\Test_1.0>node --version 
v0.10.24

C:\Program Files (x86)\Jenkins\workspace\Test_1.0>grunt --version 
'grunt' is not recognized as an internal or external command,
operable program or batch file.

C:\Program Files (x86)\Jenkins\workspace\Test_1.0>exit 9009 
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

似乎无法找到 Jenkins 在(系统)下运行的用户帐户的 grunt-cli。我尝试全局安装 grunt cli (npm install -g grunt-cli) 并在本地安装 grunt (npm install grunt)。没有运气。

有人可以帮忙吗?

【问题讨论】:

  • 您还需要这方面的帮助吗?
  • 有人有什么补救办法吗?

标签: node.js jenkins gruntjs jenkins-plugins grunt-cli


【解决方案1】:

为了在机器上轻松配置自安装的nodejs,我不得不推荐优秀的-> http://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin

它将在机器上安装nodejs和grunt,通过易于使用的web前端,不需要shell

jenkins 作业然后可以简单地运行 nodejs 构建步骤,嘿 presto

涉及的步骤:

a) 在你的 jenkins 实例上安装这个 -> http://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin

b) 在 jenkins 上创建 nodejs 安装

去

http://URL_OF_JENKINS/jenkins/configure
  • NodeJS-> NodeJS 安装 -> 添加 NodeJS -> Name = “NodeJS 0.11.10”,勾选“自动安装”,选择“从 nodejs.org 安装”,将“grunt-cli”添加到全局安装的包中李>

c) 使用“执行 NodeJS 脚本”构建任务创建作业

var sys = require('sys');
sys.puts('NodeJS Test');
sys.puts('***************');
sys.puts('helloworld');

沃利亚 :)

运行作业并查看 nodejs 脚本运行,

你的世界就是你的牡蛎,你可以通过勾选“将 Node/npm bin 文件夹提供到 PATH”并运行“执行 shell”构建任务来使用 grunt

npm update
grunt
grunt --force reporting

【讨论】:

  • 感谢您的回答。我已经访问了您提到的链接。自动安装仅适用于 Linux x86/64 机器,不适用于我正在使用的 Windows。
【解决方案2】:

你需要在安装节点后重启 Jenkins 服务,大概是为了让它刷新你的 PATH 环境变量的缓存副本

【讨论】:

    【解决方案3】:

    我在 Jenkins 中为我完成了一些任务,但我选择了 npm 脚本路线。 Grunt 和 grunt-cli 是开发依赖项,我在 package.json 文件中定义了以下内容:

    "scripts": {
        "test": "node node_modules/grunt-cli/bin/grunt test"
    },
    

    在 Jenkins(在 Windows 上运行)中,我添加了两个构建后任务:

    npm install
    
    npm test
    

    我们刚刚在 Jenkins 服务器上正常安装了 NodeJs。

    【讨论】:

    • 但我认为这是一种 hack,不过我用过
    • 我使用 .bin 文件夹和脚本名称 build 而不是 grunt cli 文件夹。然后在詹金斯中称为“npm run build”。工作得很好,没有劫持测试脚本。完整示例:“build”:“node_modules/.bin/grunt build”
    【解决方案4】:

    在 Windows 上对我有用的另一个解决方案是使用 grunt exec 文件的完整路径,可以通过在命令 shell 中写入“where grunt”来找到该文件。我在常规 bat 文件中使用了完整路径。

    【讨论】:

      【解决方案5】:

      在 Windows 上遇到了同样的问题。当我手动安装节点并从命令行运行 npm install -g grunt-cli 时,jenkins 无法识别 grunt 命令。所以卸载节点,重新安装它但不要运行 npm install。然后重启jenkins slave。然后从在您的特定 jenkins 从站上运行的 jenkins 作业中,使其运行运行 npm install -g grunt-cli 的 Windows 批处理命令,然后再次重新启动 jenkins 服务。然后从作业中运行 npm install。然后一切都对我有用。如果问题仍然存在,则卸载从属服务器,然后重新安装,然后一切正常。

      【讨论】:

        猜你喜欢
        • 2023-03-23
        • 2016-03-19
        • 2020-05-08
        • 2014-07-08
        • 2016-06-29
        • 2014-09-29
        • 2014-11-02
        • 2016-02-20
        • 1970-01-01
        相关资源
        最近更新 更多