什麼是TravisCI
Travis 提供了Continuous integration即持續集成的功能,只要代碼有變更,就自動運行構建和測試,反饋運行結果。
Travis 可以綁定 Github 上面的項目,只要有新的代碼更改提交,就會自動抓取,然後,構建一個運行環境,執行測試代碼。
爲什麼用TravisCI
提高效率,一次寫好測試用例就完事,以後每次push到github都會自動測試,提高軟件開發的效率
點擊上面的build圖標可以進去Travis頁面看詳細的構建測試情況
如何編寫.travis.yml文件
Travis使用前的準備參考廖雪峯博客
我這裏說一下.travis.yml文件的編寫,關於go與數據庫的基本配置
language: # 指明使用的語言
- go
go: # 語言版本號
- "1.x" # x表示對應前綴的最新版本
- "1.10" # 注意,需要 "1.10" 版本的時候必須表示爲字符串形式,如果寫成 1.10 則會使用 1.1 版本
- "1.10.x"
- master # 默認使用最新版本
script: # 執行的腳步,但是go默認會執行下面的這些命令的,所以可以不用寫
- go get -v
- go test ./...
使用提供的數據庫服務
mysql綁定了127.0.0.1和3306端口,連接需要認證,用戶名可以用travis或者root,密碼都是空,最好用root因爲權限高點
service:
- mysql
before_install: # 注意需要先創建一個與你程序運行需要數據庫名
- mysql -e 'create database yourDB;'
修改數據庫密碼
很簡單=。=就粘貼下面一句代碼,把your_pwd替換成你的密碼就可以,用戶名還是root
before_script:
- echo "USE mysql;\nUPDATE user SET password=PASSWORD('your_pwd') WHERE user='root';\nFLUSH PRIVILEGES;\n" | mysql -u root
關於數據庫版本
虛擬環境類型 | Ubuntu Precise | Ubuntu Trusty |
---|---|---|
Sudo-enabled | 5.5.x | 5.6.x |
Container-based | - | 5.6.x |
如果需要使用5.7版本,需要在sudo-enabled Trusty環境中,然後如下設置
addons:
apt:
sources:
- mysql-5.7-trusty
packages:
- mysql-server
- mysql-client
before_install:
- sudo service mysql restart
- mysql -e 'create database yourDB;'
關於虛擬環境類型的選擇
因爲Travis的每一個build都是運行在虛擬環境上,要麼是虛擬機要麼是容器,系統有Ubuntu和OS X,除了容器類型沒有sudo權限,其他類型都有
我建議使用第二列的Ubuntu Trusty - Container-based,雖然不能執行sudo權限,但是構建速度快
如果你在 .travis.yml 文件使用了下面一些關鍵字,會默認爲你選擇相應的虛擬環境
導致docker環境
services: docker
或者在構建腳步中有使用docker相關命令
導致 sudo-enabled linux (Ubuntu Trusty) 環境
sudo: required 或者 sudo: true
或者在構建腳步中有使用sudo相關命令
導致OS X
os: osx
language: objective-c
或者使用其他一些macOS相關的語言或者命令
如果都沒有聲明上面的字段,默認提供 container-based linux (Ubunty Trusty) 環境