• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 自動化的高效團隊開發環境

    發表于:2013-05-15來源:伯樂在線作者:陳天點擊數: 標簽:自動化
    自動化的高效團隊開發環境 這兩天無意翻到幾個月前的Evernote筆記,看到了當時對團隊開發環境的一些想法??上Ш髞矸N種,這一想法未能得到實踐,只能將其完善后公諸于眾,立此存照,日后有空可以一試。

      1. 引子

      這兩天無意翻到幾個月前的Evernote筆記,看到了當時對團隊開發環境的一些想法??上Ш髞矸N種,這一想法未能得到實踐,只能將其完善后公諸于眾,立此存照,日后有空可以一試。

      考慮這套開發環境是因為我們遇到了這些問題:

      開發人員的環境并不統一:dev在osx,ubuntu 11.10和ubuntu 12.04上工作,而ux在windows下工作,協調,解決問題不太方便,尤其是一個bug在A的系統出現,卻在自己的環境下無法復用。

      無法即刻搭建和線上同版本的環境,解決線上問題。小團隊節奏很快,當前的工作目錄可能和線上版本差幾天的代碼(diff可能已經是巨量),所以當線上出問題時,將工作環境切換過去非常耗時(尤其是數據庫發生變化時)。

      為新員工構建開發環境耗時且問題重重。這和第一點有些類似,即在ubuntu下工作的構建開發環境的流程在osx下會break。尤其是后期我們不斷有開發人員轉換系統到osx下。

      當時正好看到一篇關于 vagrant 的文章,感覺這正是我想要的救命稻草。

      2. 理想的開發環境

      我心目中理想的開發環境應該是這樣子的:

      編輯環境和運行/測試環境分離。這意味著開發人員,不管是dev還是ux,可以使用任何她喜歡的系統進行內容的編輯,而其產出可以無縫地運行在另一個統一的環境。無縫是很重要的體驗,如果分離意味著在兩個系統顯示地頻繁切換,那還不如不分離;在此基礎上的統一的環境則讓大家在同一個上下文中交流。

    開發人員可以同時工作在好幾個版本下。在途客圈,一個relase(或者一個scrum)以兩周為周期,一周開發,一周測試,然后就上線,如圖所示:
    自動化的高效團隊開發環境

      這意味著在任何一周,開發人員同時工作在3個不同的branch上,以week 3第一天為例:Dalian已經部署到線上,Edingburgh交付測試,而Florence正在開發中。開發人員能夠無痛地在這三個環境中任意切換,就像任務調度一樣,保存上下文,切換到另一個branch,開始工作。作為小團隊,我們不希望甚至不可能將有限的人員切成三份來運作,所以應該通過工具支持這種開發狀態。

      能很好地支持持續集成。travis-ci.org 跑跑開源項目還可以,但商業項目就免了,而且其每次構建都rebuild整套環境這個效率太低。

      3. 構建理想的開發環境

      存在的問題和期望的解決方案已經擺出來了,接下來就是如何實現的問題。這種場景是典型的虛擬機大展拳腳的地方,VmWare會很欣慰地擺出VDI + vSphere的解決方案。不過小團隊人少錢緊,自然只能尋找免費的替代品,即之前提到的 vagrant。

      什么是VAGRANT?

      我對它的不太確切的理解是:一套自動化創建,部署和使用虛擬機的工具。vagrant 原生支持virtualbox,這就足夠了。通過一系列CLI命令,我們可以很方便地操作虛擬機。

      創建并運行虛擬機:

    1
    2
    3
    $ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box 
    $ vagrant init lucid32 
    $ vagrant up

      登入虛擬機:

    1
    $ vagrant ssh

      打包虛擬機:

    1
    $ vagrant package --vagrantfile Vagrantfile.pkg

      更詳細的 vagrant 使用說明請參考其 文檔,這里就不詳細介紹。

      如何使用VAGRANT構建理想的開發環境

      在這個模型中,大家交流的基礎是虛擬機。虛擬機隨時被創建,隨時又銷毀,有一個box服務器 vagrant repo 來統一存儲所有box并提供上傳/下載服務。box服務器提供兩類box:

      基準box。每天半夜從GitHub pull相應branch的代碼,并輔以對應的database,自動打包成一個基準box。每個活躍的branch每天都會有一個新的基準box?;鶞蔮ox保存一周足矣。大家新的一天工作的基礎是基準box。

      PR box。解決線上問題時,和QA,CI交流使用的box。

      任意一個box都是一個沙箱,它包含和線上環境同版本的操作系統,運行環境。同時里面有對應branch的代碼庫和數據庫。數據庫采用線上數據庫的一個子集,可以讓系統正常運行即可。box和用戶的host OS間可以共享目錄,比如說代碼的目錄,這樣可以讓用戶通過host OS上的個性化編輯環境撰寫代碼。此外,box里的port和host OS的port要能一一映射,這樣用戶完全具有本地的測試體驗。

    原文轉自:http://blog.jobbole.com/38932/

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>