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