前言
最近負責一個開源項目LEP的“持續集成”模塊,之前從來都沒有聽說過的新概念,所以在這裏記錄一下最近的收穫。
正文
什麼是持續集成
首先持續集成(continuous integration)這個概念很多人都沒有聽說過(我自己還翻了翻這學期的《軟件工程》課本,只有集成測試)。
那麼什麼是持續集成呢?
引用知乎上@趙劼的回答
集成是指軟件個人研發的部分向軟件整體部分交付,以便儘早發現個人開發部分的問題;
而所謂的持續,就是說每完成一個完整的部分,就向下個環節交付,發現問題可以馬上調整。是的(大概是筆誤,應爲“使得”—康康注)問題不會放大到其他部分和後面的環節。
引用知乎上@yumminhuang的回答和圖
持續集成強調開發人員提交了新代碼之後,立刻進行構建、(單元)測試。根據測試結果,我們可以確定新代碼和原有代碼能否正確地集成在一起。
這個圖能讓我們理清持續集成要做什麼,即向項目提交修改,馬上進行構建(或者說編譯),然後進行相應的測試,反饋結果,保證儘快合併,使得小改動不會累計爲大改動,以至於出現更多的問題。
對於私有項目,或者說公司的項目來說,我們需要配置一套額外的服務器作爲CI Server,而對於開源項目或者小團隊來說,如果能有簡單可靠還免費的CI服務就好了(成本問題)。而Travis CI則滿足了我們的需求。
Travis CI
Travis CI是一個非常方便的持續集成工具,相對於需要自己配置部署環境的Jenkens,Travis CI更適合開源項目(當然後者更加成熟,更加適合私有項目和企業內的項目)。很多大型的開源項目,比如google的protobuf等,都使用Travis CI來進行持續集成。
使用Travis CI來進行持續集成
我們假定你的開源項目存放在github。
首先使用github帳號登錄Travis CI官網
也就是右上角的sign in
然後同步你的倉庫
點擊左側的+號
左上角的sync account即可同步
然後在下面打開指定倉庫就可以了。
同時我們需要在倉庫中編寫一份名爲.travis.yml
的配置文件,來指定我們的項目需要進行怎樣的操作。
這裏以我自己編寫的LEPD項目爲例
sudo: required
language: c
complier: gcc
script: make
before_script: sudo apt-get install libev-dev
notifications:
email:
recipients:
- xxx@gmail.com
on_success: change
on_failure: always
可以看到這裏指定了需要的sudo權限,編程語言,編譯器,script即執行的操作,before_script則安裝了項目依賴的libev-dev包,通知的方式email,並且指定了郵件地址。
而對於不同語言等更多細節,還需查看官方文檔
然後便是愉快的commit,可以在官網上查看log,同時郵箱裏也會有通知。
參考閱讀 & 引用
如何理解持續集成、持續交付、持續部署?
持續集成是什麼?
六款不容錯過的開源持續集成工具
用持續集成工具Travis進行構建和部署