使用Travis進行持續集成

https://www.liaoxuefeng.com/article/0014631488240837e3633d3d180476cb684ba7c10fda6f6000


持續集成:Continuous Integration,簡稱CI,意思是,在一個項目中,任何人對代碼庫的任何改動,都會觸發CI服務器自動對項目進行構建,自動運行測試,甚至自動部署到測試環境。這樣做的好處就是,隨時發現問題,隨時修復。因爲修復問題的成本隨着時間的推移而增長,越早發現,修復成本越低。

大多數軟件公司對軟件項目進行持續集成的重要性已經取得共識,但真正實踐的還是少數。

作爲開源項目,由於項目開發人員少,沒有二逼產品經理的指手畫腳,所以代碼質量相對商業項目更好。對開源項目實施CI,會更簡單。

下面我們來介紹如何爲GitHub上託管的開源項目用Travis CI進行持續集成。

Travis CI是什麼東東?

Travis CI是在線託管的CI服務,用Travis來進行持續集成,不需要自己搭服務器,在網頁上點幾下就好,用起來更方便。最重要的是,它對開源項目是免費的。

爲什麼是GitHub?

因爲GitHub和Travis是一對好基友,不用GitHub雖然也能用Travis,但是配置起來太麻煩。而且,作爲開源項目,爲什麼不用GitHub?

還不會git怎麼辦?

零基礎Git教程,只能幫你到這裏了!

我用了GitHub,也有開源項目,現在怎麼搞CI?

首先,直接用你的GitHub賬號登錄Travis CI的網站:https://travis-ci.org/

第一次登錄時,授權給Travis訪問你的GitHub代碼庫,然後,把需要CI的代碼庫選上:

travis-select-repo

默認情況下,Travis會在代碼push時收到GitHub通知,然後自動獲取最新代碼,進行CI。

但是我們還是需要編寫一個.travis.yml文件來告訴Travis一些項目信息,比如用的Java還是Python,用的JDK 8還是JDK 6,等等。

假設我們用的Java和JDK 8,這個.travis.yml就這麼寫:

language: java

jdk:
  - oraclejdk8

然後,放到代碼庫的根目錄下。

Travis一看到Java項目,默認用Maven 3,然後執行兩個腳本命令:

install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true
script: mvn test

提交.travis.yml並push後,如果一切順利,Travis就會自動開始構建這個Maven工程。可以在Travis上看到構建結果和詳細的輸出:

travis-ci

也可以指定構建腳本,例如:

script: mvn package

如果項目結構標準,pom.xml在根目錄下,執行就會一切正常。但是,如果pom.xml在子目錄下,就需要修改install腳本:

install: cd wxapi && mvn install -DskipTests=true -Dmaven.javadoc.skip=true

有一些Maven項目在package時用到了PGP密鑰來簽名,因爲Travis的服務器不可能知道PGP密鑰,所以install腳本就會失敗。解決方法是加上-Dgpg.skip=true

install: cd wxapi && mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Dgpg.skip=true

如果想在GitHub的項目首頁顯示一個高大上的build:passing標誌,比如像這樣:

build-passing

可以在根目錄的README.md中加上一個圖片鏈接:

[![Build Status](https://travis-ci.org/michaelliao/openweixin.svg?branch=master)](https://travis-ci.org/michaelliao/openweixin)

是不是用了CI代碼質量就有保證了?

這個問題的答案是。如果CI能提高代碼質量,那軟件公司只需要招實習生寫代碼外加CI就可以了,招那麼貴的高級工程師浪費錢幹啥?

是不是用了Travis就實現了CI?

這個問題的答案還是。CI是解決問題的手段而不是目的。問題是如何提高代碼質量。我見過很多公司的項目,編譯一次半小時(不是編譯Linux內核那種),測試一次幾個小時。不能在短時間內完成編譯、測試的代碼都有問題,導致CI形同虛設。這裏的“短時間”是指5分鐘以內。

最後一個問題:

私有項目怎麼用Travis?

如果不是開源項目,能用Travis嗎?免費的肯定是不能用了,但是有收費的Travis Pro,至於費用,呵呵,四個字:

貴得要命

最便宜的每月需要$129!不想花這個冤枉錢怎麼辦?自己搭CI服務器啊!至於怎麼搭,且聽下回分解。

感覺本站內容不錯,讀後有收穫?

發佈了433 篇原創文章 · 獲贊 82 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章