2016-11-22 80 views
0

設置:其中包含客戶機/服務器/共享代碼,目前在1個分支GIT工作流開發(所有文件)對生產(部分的文件)

1 GIT存儲庫。

構建過程:

  • 客戶是一個基於網絡的應用和需要是 最小化/捆綁/等等,這結果在一個文件中
  • 服務器 現在仍然保持不變,但它可能稍後會捆綁在

問題:

我不希望所有的文件是我的生產服務器上,只是客戶端的捆綁版本與服務器文件夾。如果我將主分支拉入,我將獲得所有文件,而不僅僅是捆綁版本。

解決方案:

??? - 我該如何處理?創建額外的存儲庫,創建多個分支?這通常如何完成?

回答

3

通常情況下,您想單獨使用源代碼管理,構建流程和可部署的工件。 Git主要用於源代碼管理,公認的做法是隻有源代碼。

然後你可以用一些構建工具(詹金斯,竹子等)構建它 然後你可以使用構建工具的構建結果,或者如果你喜歡使用版本控制來處理像Nexus或ar​​tifactory這樣的工件。

這可能聽起來很複雜,但是在將來避免了很多問題。

+0

同意。您實際上正在討論將代碼從開發移植到生產的部署過程 – ItayB

+0

任何特定於Web應用程序的東西?目前,我正在爲服務器和webpack使用node.js作爲客戶端JavaScript。目前正在研究,最終可能會回答我的問題:http://stackoverflow.com/questions/35054082/webpack-how-to-build-production-code-and-how-to-use-it –

+0

無法評論經驗,但下面的[答案](http://stackoverflow.com/questions/21259181/how-to-package-deploy-node-js-express-web-application)似乎是在下載所有文件。然而,下面的[文章](https://strongloop.com/strongblog/node-js-deploy-production-best-ractice/)似乎也有道理(來自java背景) – dubes

0

您可以使用.gitattributes (5)export-ignore directive選擇版本控制中的文件,但不需要生產。

如果您使用像Capistrano 3這樣的部署系統,它實際上會使用git-archive (1)。此命令將創建一個檔案以部署在發佈文件夾中,並且它將遵循您的.gitattributes文件中的export-ignore規則。


爲了您的客戶端文件,你可以捆綁的文件在本地或者部署在機器上,然後rsync,或上傳激活新版本之前,任何其他方式生產的機器上發佈的文件夾。

我也可以建議您將客戶端文件實際部署到CDN,並且服務器僅從CDN提供版本化客戶端的HTML頁面。

+0

謝謝,我會檢查一下 –