2013-10-20 43 views
3

我的grunt build任务创建了我的项目所依赖的/dist/。我不想在我的存储库中包含构建的文件。我宁愿使用Jenkins来允许在我的项目上进行持续集成。这是我在我的.openshift/action_hooks/build,我不知道为什么它没有运行:在OpenShift Build之前运行Grunt Build

echo " >>>>>>>>> Building with grunt..." 
grunt build 
echo " >>>>>>>>> Finished building with grunt..." 

我知道它没有运行,因为我不看那些回应线路中的詹金斯建立日志或应用程序日志(rhc tail <app-name>)。

此外,当我ssh到服务器,并尝试手动运行grunt build,它是无法找到繁重的命令,所以这让我怀疑这是否是可能的...

我应该只包括我的回购中的内置文件?如果是这样,OpenShift何时会解决这个问题? :)

让我知道如果我做错了什么。谢谢!

回答

4

这里的基本问题是openshift-origin-cartridge-nodejs而且npm_global_module_list不包括全局npm模块中的grunt/grunt-cli。

我打开openshift/origin-server/issues/4069作为一个RFE来获得这在默认墨盒。

与此同时,我一直致力于engineersamuel/openshift-origin-cartridge-nodejs,其中包括凉亭和Grunt支持。

如果找到Gruntfile.js,我的墨盒将运行grunt prod。默认情况下,grunt不在路径上,这可以通过在node_modules前添加命令来解决。

# If there is a grunt file, run $ grunt prod 
if [ -f "${OPENSHIFT_REPO_DIR}"/Gruntfile.js ]; then 
    (cd "${OPENSHIFT_REPO_DIR}"; node_modules/grunt-cli/bin/grunt prod) 
fi 

./bin/control还检查bower.json文件并安装相应的软件包。

您可以快速,方便地测试出与下面的命令盒反射这一习俗墨盒:

rhc create-app nodejstest "http://cartreflect-claytondev.rhcloud.com/reflect?github=engineersamuel/openshift-origin-cartridge-nodejs"

3

一种可能性是使用安装后阶段来执行你的咕噜任务。首先,以不应该的方式安装grunt-cli:

npm install grunt-cli --save-dev 

然后,更新您的软件包。JSON在安装后阶段执行grunt prod

{ 
    ... 
    "scripts" : { 
    ... 
    "postinstall": "node_modules/.bin/grunt prod", 
    ... 
    } 
    ... 
} 

现在,当你部署到OpenShift,并安装在您的依赖后,你的呼噜声任务应该运行。

这种解决方案不是我认为的完美,但应该完成工作,以便在制作自定义盒式磁带时可以启动和运行,就像@Samuel所做的那样。

+0

这应该是''postinstall“:”export HOME = app-root/runtime/repo; ./node_modules/grunt-cli/bin/grunt prod“ – laggingreflex

4

虽然这是一个古老的问题,但我刚刚发现了一个当前问题的答案。

首先,现在您可以将grunt-cli添加到您的依赖关系中(npm install grunt-cli --save),并且Openshift会将那些通常使用-g标志安装的标记添加到路径中。

从Openshift网站:

了通常使用-g或--global标志安装命令行实用程序将被自动添加到系统$ PATH,只要它们都包含在项目的package.json文件的依赖关系或devDependencies部分。

里面.openshift/action_hooks/build您需要先重置主目录是回购目录,然后运行grunt build然后切换主目录回到原来的。

#!/bin/bash 

OLD_HOME=$HOME 
cd $OPENSHIFT_REPO_DIR 
export HOME=$OPENSHIFT_REPO_DIR 

grunt build 

export HOME=$OLD_HOME 

现在grunt将能够找到您的Gruntfile.js并运行您需要的任何任务。