【持續整合】使用Travis CI來持續整合你的開源專案
前言
最近負責一個開源專案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:
- [email protected].com
on_success: change
on_failure: always
可以看到這裡指定了需要的sudo許可權,程式語言,編譯器,script即執行的操作,before_script則安裝了專案依賴的libev-dev包,通知的方式email,並且指定了郵件地址。
而對於不同語言等更多細節,還需檢視官方文件
然後便是愉快的commit,可以在官網上檢視log,同時郵箱裡也會有通知。