• 使用 Travis CI 服務在遠端虛擬機編譯測試

  • Pyslvs Build Status: Build Status

Travis CI

Github 等較知名的倉儲管理系統或非營利組織 Pypi 成為各種程式的集散地,週邊衍生出一些提供第三方編譯認證的服務,讓個人電腦不用因為測試其他平台環境,而需要增加更多虛擬機檔案。

Travis CI 提供 Github 倉儲直接連接的功能,能針對帳戶內的倉儲的每個 branch 做編譯測試單元測試

在欲使用測試服務的分支根目錄中新建一個 .travis.yml 檔案,內容即為使用的虛擬機環境。

目前為 Pyslvs 編寫的環境如下:

dist: trusty
sudo: required
language: python

python:
- 3.4
- 3.5

before_install:
  #SIP
  - cd ..
  - curl -L -O "https://sourceforge.net/projects/pyqt/files/sip/sip-4.19.3/sip-4.19.3.tar.gz"
  - tar -xvf sip-4.19.3.tar.gz
  - cd sip-4.19.3
  - python configure.py
  - sudo make install
  #Qt5
  - sudo add-apt-repository -y "ppa:beineri/opt-qt59-trusty"
  - sudo apt-get update -qq
  - sudo apt-get install qt59-meta-full qt59charts-no-lgpl
  - QTDIR="/opt/qt59"
  - PATH="$QTDIR/bin:$PATH"
  - source /opt/qt59/bin/qt59-env.sh
  - qmake -v
  #PyQt5
  - cd ..
  - curl -L -O "https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.9/PyQt5_gpl-5.9.tar.gz"
  - tar -xvf PyQt5_gpl-5.9.tar.gz
  - cd PyQt5_gpl-5.9
  - python configure.py --confirm-license
  - sudo make install
  #QScintilla
  - cd ..
  - curl -L -O "https://sourceforge.net/projects/pyqt/files/QScintilla2/QScintilla-2.10.1/QScintilla_gpl-2.10.1.tar.gz"
  - tar -xvf QScintilla_gpl-2.10.1.tar.gz
  - cd QScintilla_gpl-2.10.1
  - cd Qt4Qt5
  - qmake qscintilla.pro
  - sudo make install
  - cd ../designer-Qt4Qt5
  - qmake designer.pro
  - sudo make install
  - cd ../Python
  - python configure.py --pyqt=PyQt5
  - sudo make install
  #PyQtChart
  - cd ../..
  - curl -L -O "https://sourceforge.net/projects/pyqt/files/PyQtChart/PyQtChart-5.9/PyQtChart_gpl-5.9.tar.gz"
  - tar -xvf PyQtChart_gpl-5.9.tar.gz
  - cd PyQtChart_gpl-5.9
  - python configure.py
  - sudo make install
  - cd $TRAVIS_BUILD_DIR

install:
  - pip install -r requirements.txt
  - pip install pyinstaller

script:
 - make

before_cache:
  - rm -rf $HOME/.cache/pip/log
cache:
  directories:
    - $HOME/.cache/pip

在未註明作業系統的情況下,使用的是 linux,另外也有 OSX 與 Windows 的選擇,不過相關檔案和指令就必須增加辨識以調整之。

當套件提供者使用 Trusty 時,會使用 Ubuntu 14.04 的作業系統執行,不過大部分的編譯工具都已內建,並且可以指定版本。

若是沒有安裝(如 Qt 等函式庫),則可以使用 install 指令集在虛擬機裝自己想要使用的套件,安裝套件必須將 sudo 選項啟用。

Python 3 比較需要注意的是,雖然為 Ubuntu 14.04,但是調用 Python 選項後,整台電腦只會有一個 Python 版本,因此不用特別註明 pip3。

由於上面的檔案中條列了 Python,因此會建立 2 台虛擬機,分別上 Python 3.4 與 3.5(目前可以支援到最新的 3.7 測試版)。

若是想針對各種混搭的環境測試,可以使用 matrix 選項,建立更多不同種環境的虛擬機,更詳細的設定則可以參考說明頁面

目前在這個服務中已經成功編譯 Solvespace 端口和 Pyslvs。

虛擬機在 script 的指令都回傳 0 或是錯誤時會自動關機,留下 log 供參考。

Travis CI 會在每次更新倉儲時編譯,類似 gh-pages,不過因為要幫所有虛擬機開機,所以會過一段時間才會有結果。

編譯後可以透過 commit 後的綠點圖示查看結果,或是使用 Shields.io 製作 Readme 的動態標籤。

Shields.io

Shields.io 是 Javascript 寫成的 SVG 圖示服務,其中連結了各大倉儲網站,能夠蒐集並呈現不同的數據。

透過修改網址的參數就能改變 badges 的設定,基本上可以直接參考網站上的範例就能添加 badges,追蹤倉儲的一些統計數據。


Comments

comments powered by Disqus