2009-10-09 94 views
4

我已經看到這個問題的一些問題在網絡上解決,但我仍然困惑,所以我想我會問Stack Overflow的聰明人關於這個問題。開發和生產工作流程

我們是一家小型創業公司,目前我們的工作流程從開發 - >生產涉及到ftp和剛剛上傳的dev代碼。

開發代碼是在顛覆控制下 - 雖然我們沒有利用中繼/標籤/分支,因爲我不知道如何最好地使用這個結構。我覺得應該與不需要我複製粘貼文件夾和文件的實時站點進行無縫集成。

這裏的一些細節: - 介紹CakePHP + MySQL的 發展 - 託管在媒體寺(GS) - 開發人員使用在Mac OS(科達)和Windows(Dreamweaver中)

所以我想問的是:怎麼辦您設置了適當的可擴展工作流程?

回答

3

您的工作流程似乎適用於沒有QA的小型組織。我會建議你投入一些資源到

1)建立生產版本,並有一個版本方案,以便您可以準確地跟蹤您的生產版本。爲每個版本添加標籤,以便您可以跟蹤它。

2)構建安裝程序。不要訴諸手動複製文件夾,因爲你可能犯了一個錯誤。安裝程序還可以輕鬆跟蹤生產中何時出現問題。

3)部署前對生產進行一些QA。即使是一個小小的QA也有很長的路要走。開發人員不是很好的測試人員,因爲他們可能偏向於程序的「功能」。

4)不要打擾分支,直到你真的不得不使用它。只有這樣才能清楚你需要哪種結構。顛覆red-book有關於如何構建分支機構的一些想法。

+0

你能解釋一下「構建安裝程序」嗎?這與Capistrano的目標是相似嗎? http://www.capify.org/index.php/Capistrano 我們的生產和dev代碼之間的區別是CakePHP框架中的一些配置和路由文件。目前,我只是儘量避免上傳這些文件,因爲它們在兩種環境中都不相同。 – 828 2009-10-11 17:57:48

+0

「構建」過程可以適合您的環境。例如。我的部署腳本(坐在Web服務器上),更新我的代碼庫中的代碼,清空app/tmp/cache文件夾,設置權限等。對於特定於環境的文件(數據庫細節,某些配置等)將被忽略通過版本控制,我在最初部署時手動編輯這些內容。 – ifunk 2009-10-12 01:22:12

+0

Capistrano將非常適合您所描述的情況。它將處理從源代碼管理系統到生產環境的文件複製。 – 2009-10-13 21:32:48

2

我過去做過的一種方法是讓生產代碼實際上是一個真正的顛覆客戶端,並拉出'生產'分支。

因此,您在開發分支上像往常一樣進行工作,並且每當您準備好時,都將副本剪切到生產分支。同步生產服務器,並且您活着。如果出現問題,您可以隨時重新同步到舊版本。

對於加分,你可以添加一個臨時的分支,讓你可以捕捉一切都改變了這在代碼中的東西。然後將它們添加到部署腳本中,根據需要調整生產系統。

+0

這聽起來很有趣。但你如何連接兩個開發和生產分支?即當你說「剪下一個副本」時,這是什麼意思? – 828 2009-10-11 17:54:43

2

我認爲要考慮的關鍵是要包括儘可能多的流程和工作流程,以提高代碼的質量並減少部署的工作量。關鍵是要在代碼庫安定下來時開始創建這些東西。在所有事情變化迅速的早期,您將花更多時間更新腳本,而不是使用腳本來保存腳本。

我建議以下幾點:

  1. 創建一個自動構建腳本。可以使用許多不同的技術和腳本語言(我更喜歡Ant)從源代碼控制中提取文件,自動增加版本號,添加標籤並創建部署包。這可能需要大量的努力來設置和解開開發人員目前正在做的任務,但這將長期得到很大回報。它應該讓您的開發人員免於重複構建任務,並讓他們專注於解決您的技術問題。正如你所知道的,開發人員會厭倦一遍又一遍地做同樣的事情,當你感到無聊的時候,你就開始犯錯。

  2. 自動安裝。這是一個邊緣優勢,但事情仍處於快速發展階段,但從長遠來看,它將騰出資源在其他地方更好地投入。至少,您應該有用於部署代碼的安裝包和安裝步驟。

  3. 分段環境。你可能會爭辯說,這是不需要的,直到你的用戶基數足夠大,當你部署代碼時,當生產系統消失時,他們就會開始sqawking。有一個系統可以讓您測試您的更改而不會讓您的用戶羣不舒服,這一點很重要。但是,當然,這也需要一些質量保證工作。在部署之前,您肯定需要一些測試。開發人員總是認爲他們是對的,從來沒有錯過任何東西,但絕不應該相信。總是有一個不同的代碼路徑或一些他們從未想到的新的點擊排列。

  4. 備份您的SVN。這應該不用說了,但我曾經在一家公司工作,我們的源代碼庫沒有備份超過兩年。您可以通過執行svndump進行備份,然後將生成的文件複製到其他位置。您也可以僅備份存儲庫所在的文件夾,然後在出現問題時進行恢復。

+0

您有關於如何備份SVN存儲庫的鏈接嗎?它是否像從服務器複製文件夾一樣簡單,還是有更多的東西?謝謝! – 2009-10-10 19:18:22

+0

我喜歡分級環境,所有測試都可以發生。但這意味着我需要一個自動化的方式讓svn在3(dev,staging,prod)之間同步。只是想知道這個鏈接如何在svn上工作? – 828 2009-10-11 18:00:42