1. 程式人生 > >【持續整合】使用Travis CI來持續整合你的開源專案

【持續整合】使用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,同時郵箱裡也會有通知。

參考閱讀 & 引用