2015-04-16 47 views
2

我們與一些開發人員合作開發了一個巨大的TYPO3項目。我們試圖建立一個CI基礎設施,GIT,作曲家和詹金斯。 我們有發展(流浪),舞臺和生產環境。臨時服務器 上同時有多個功能是很常見的。由於不同的人員負責測試這些功能,因此這些功能通常不會同時應用於生產服務器。 因此,我們建立了以下工作流程:CI工作流程和單一功能部署的大型TYPO3項目

所有開發人員都從主分支開始創建自己的功能分支。當功能轉到登臺服務器時,應該推送功能分支。 我們有一個配置,其中所有功能分支都已定義,應該轉到分段。 Jenkins先生在構建項目之前將所有功能部門合併,並將所有內容部署到分段服務器。當一個功能成功通過測試並投入生產時,功能分支必須合併到主設備。 Jenkins先生建立了這個項目,一切都將部署到生產中。

到目前爲止,除了一點之外,我們對工作流程非常滿意:composer.lock文件。

功能可以更新或安裝軟件包。只要兩個特徵分支操作composer.lock文件,就會與文件的「散列」發生衝突,而該散列不能自動合併。

在我看來,沒有乾淨的解決方案。對我來說,唯一的解決方案是從存儲庫中排除composer.lock文件,並讓Jenkins先生做一個「作曲家更新」,這會導致所有必需包的未定義狀態。 在我看來,最簡潔的方法是在所有功能都經過測試後將整個開發環境合併到生產環境中,但由於組織原因無法實現。

此工作流程是一個巨大的邊緣案例,還是有最佳實踐解決方案?

感謝您的幫助!

回答

-1

我的建議是:

  • 保持composer.lock上(功能)分支機構和(版本)標籤只有
  • 分支穩定和發展的一個新功能的版本背景下被鎖定
  • 從主開發分支(主)刪除composer.lock
  • 主要始終是邊緣和發展發展,直到功能(或功能集)凍結
  • 合併功能分支時開發分支排除了composer.lock文件
    • 你可以使用git merge --no-commit,然後編輯合併,unstage composer.lock,然後git commit -m "merged <feature-branch>"
  • 的特性凍結,分支出來(新版標籤),並添加composer.lock鎖定版本方面

歸結起來:feature branch (locked)dev-master (unlocked)version tag (locked)。從(鎖定)版本標記+分配(釋放)

  • 安裝/生產升級的發佈包或後續使用上生產箱作曲家的做法和安裝的版本標籤


    • 構建部署包: (

    在我看來,最乾淨的方法是合併整體開發環境到生產的所有功能都經過測試後...

    合併到生產:) - 錯,不,那太容易了!

  • 0

    真的應該添加composer.lock文件給你的git項目,因爲否則你會在jenkins和當然每個開發者獲得不同的版本!

    我不會合並超過詹金斯當前特徵+主,並將手動解決可能的合併問題