2013-10-20 68 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並運行您需要的任何任務。