2012-04-07 22 views
17

我從2006年開始開發TYPO3項目,項目越來越大,越來越複雜。通過聯繫表格和新聞列表建立一個簡單的CMS網站是例行公事。如何管理和開發大型TYPO3項目?

現在,我們完成了一個更大的項目:一個國際化公司的平臺與無數的擴展: 登錄&註冊,新聞,列出數據庫記錄,動態接觸的形式,調查&統計,聯網功能:文件上傳&下載,每個TCA修改等幾個後端「調整」。

項目經理對我們開發人員感到不滿,因爲有時候,當我們完成了函數X並且後來將函數Y提交給開發服務器之後,函數X被破壞了。這與typoscript設置,擴展相互依賴性,版本控制錯誤或有時簡單的編程錯誤和拼寫錯誤有關。 我知道如何利用後者的照顧,但一般:

根據您的經驗:

我們怎樣才能開發TYPO3,這裏的一切在手和擴展唐工程的防錯系統不妨礙他們?換言之: 我們如何確保和隔離功能(擴展) - 並避免這些相互依存問題?

我們正處在一個開發團隊的工作有兩個開發商,我們已經使用:

  • Subversion版本庫
  • 發展&測試
  • 外部Typo腳本配置文件的本地開發服務器,分成每個分機的單個文件

編輯f或Bountyhunters:

我所尋找的是一個最佳實踐的總結,可能包括以下主題:

  • 一般工作流程習慣
  • 通用編碼習慣
  • 可靠性我們的顛覆提交(或GIT)
  • 單元測試(PHPUnit的,硒?)
  • 部署(我還沒有想出如何自動化部署可以 他用lp我們)
  • Typo腳本的最佳實踐
+0

使用許多自動部署系統之一。查看英文和開發郵件列表檔案。頻繁出現類似的線索。 – pgampe 2012-04-08 14:19:56

+0

謝謝 - 不幸的是,我在英文郵件列表中找不到與「自動部署」相關的任何內容,但會看得更遠。你能推薦一個PHP/TYPO3系統嗎?我們已經考慮使用PHPUnit和Selenium進行測試,我想這也可能是一個重要的改進。 – Mateng 2012-04-08 16:57:04

+0

看看這裏:https://usetypo3.com/good-practices-in-projects.html – Daniel 2016-12-14 14:24:06

回答

24

我們可以在大型TYPO3項目中發現的問題與任何開發項目都沒有太大的不同。

一般做法:

常見TYPO3做法:

其他參考:

擴展可以幫助管理複雜TYPO3安裝:

運用現代項目管理方法&工具

  • 的Scrum,看板,精益的研究與開發原則
  • Bugtrackers作爲管理平臺,Trac的

書籍:

+0

這看起來像一個廣泛的集合,謝謝。我實際上很少使用常量,而是設置 - 學習了一個細節。您是否親自使用了Oliver Klees幻燈片中提到的擴展名phpunit? – Mateng 2012-04-11 09:55:09

+0

就我個人而言,每當我有一些複雜的項目/擴展需要開發時,我都會使用它。 – 2012-04-11 11:05:09

+1

更新:添加了大型TYPO3安裝管理的推薦擴展列表 – 2012-04-11 11:05:49

3

我絕對recommmend開始使用PHPUnit的單元測試,但要記住單元測試真的是你如何在第一時間創建代碼,而不是通常的東西你以後添加。但是,當然,遲到比從未更好。

您應該考慮設置一個構建服務器,如jenkins/hudson或atlassian bamboo。後者是相當不錯的,並與Zend工作室集成在我看來是PHP開發時更好的選擇。通常atlassian產品被廣泛用於軟件項目。 (Jira + confluence + greenhopper尤其如此)

+0

坦克供您參考。正如我們在Netbeans中開發的那樣 - Bamboo還是一個不錯的選擇,因爲還沒有Bamboo Netbeans插件?在沒有Netbeans集成的情況下使用會有效嗎?此外,TYPO3環境推薦使用這種設置嗎? – Mateng 2012-04-10 01:15:47

+0

當然。 Bamboo是一個獨立的產品,集成允許您獲得評論和指向構建失敗直接進入代碼的位置。你可以在網頁上看到所有這些,我甚至認爲他們有一個手機應用程序。儘管如此,請不要拿我的話來看看他們的視頻。 – jornare 2012-04-10 07:45:24

2

我還建議在jenkins上設置phpunit - 儘管我已經閱讀了有關Teamcity的良好反饋,請參閱http://jenkins-php.org/作爲模板。然後,根據您編寫的代碼設置單元測試(對於原始php代碼,可能有點模擬),集成測試(API和模塊連接)以及系統測試(硒)。

一旦你在每次構建後運行它,你可以確定至少覆蓋的功能正在工作。然而,問題在於你將花更多的時間來編寫測試及其支持以及考慮可測試代碼。另外請記住,你不能涵蓋所有內容 - 那不是重點。你必須覆蓋關鍵路徑。