2015-02-06 92 views
2

我不知道這是否適合問這個問題,但是當涉及到Grunt和部署時,我正在努力使用「最佳實踐」。我的團隊使用bitbucket將repos和rackspace作爲服務器託管。使用Git進行Grunt部署

我使用grunt將我的網站構建成靜態文件(將ejs/less編譯爲靜態html/css)。我有手錶任務,並督促咕嚕咕嚕開發其完成所有的優化/縮小等

目前部署過程是:

1)咕嚕督促

2)git的承諾/ GIT中推

3)到位桶提交pull請求,合併的代碼到主

4)ssh進入服務器和git拉力。

這可以確保我在服務器上擁有的任何東西都是git commit並且已經過審查。我遇到的其中一個問題是,有時我忘記在提交之前運行grunt prod,然後結束未優化的站點。

我已經研究過使用ssh deploy方法,基本上是在運行grunt prod之後通過FTP傳輸文件。這將消除必須SSH服務器和知道命令的步驟。我擔心這種方法可能最終與git不同步,並避免代碼審查/請求的步驟。

我認爲我正處在正確處事的風口浪尖上,但我覺得我必須錯過一些東西!

有什麼建議嗎?由於

+0

我堅信可分發文件應該遠離版本控制。你有沒有想過翻轉事物並僅將* source *文件提交給Git,然後使用Grunt作爲部署工具來檢出,構建和部署文件?這樣,整個部署管道就會自動完成,不可能錯過一個步驟或提交錯誤的文件。 – 2015-02-06 18:25:13

+0

感謝@AntP的快速回復!我已經考慮過了,但是我一直無法圍繞如何正確做到。你能詳細說明你的建議嗎? – raydeneg 2015-02-06 18:31:39

回答

0

對此

[能]消除其ssh到服務器的步驟,並且知道命令

位鬥支持POST提交掛鉤,這裏更多的信息:

基本上會發生的是,當您提交到bitbucket repo時,bitbucket會向您選擇的URL(包含有關您提交的信息的有效內容)發出HTTP請求。
您有腳本,例如PHP或任何你使用的服務器端lang,當URL被點擊時觸發,然後運行你的git pull或任何你想要的命令。

這裏是一個深入指南的過程 http://jonathannicol.com/blog/2013/11/19/automated-git-deployments-from-bitbucket/

FTP傳送文件的過程

這可能是非常困難和緩慢的,即你將如何跟蹤哪些改變的文件?你將如何處理刪除本地項目文件夾上的文件,然後用這些刪除文件更新遠程文件?

爲此,我會使用rsync這是一個很好的同步工具。

我知道這不是一個完整的解決方案,並沒有解決忘記運行的問題grunt prod但希望它可能對你有一些幫助。