怎么用 Travis CI 測試 Roles?
在「好的 Roles 應(yīng)具備什么?」一節(jié)里,凍仁曾提過好的 Roles 應(yīng)導(dǎo)入 Travis CI 整合測試,有了持續(xù)整合 (CI) 才能確保每次提交的品質(zhì)。
接下來將以 chusiang.helloworld
這個簡單的 role 為例,讓凍仁帶大家串起 GitHub, Galaxy 和 Travis CI 三個服務(wù)。
撰寫一個 Role,并上傳至 GitHub。 https://github.com/chusiang/helloworld.ansible.role
于 Galaxy 網(wǎng)站進(jìn)行匯入,詳請請參考「怎么在 Galaxy 匯入 Roles?」一節(jié)。 https://galaxy.ansible.com/chusiang/helloworld/
進(jìn)入 Travis CI 網(wǎng)站。
點擊左上角的 ? 整合新 Repository。
只需三個步驟即可整合 Travis CI。
.travis.yml
。git push
即會觸發(fā) Travis CI。chusiang.helloworld/.travis.yml
的內(nèi)容如下。
---
language: python
python: "2.7"
# Use the new container infrastructure
sudo: false
# Install ansible
addons:
apt:
packages:
- python-pip
install:
# Install ansible
- pip install ansible
# Check ansible version
- ansible --version
# Create ansible.cfg with correct roles_path
- printf '[defaults]\nroles_path=../' >ansible.cfg
script:
# Basic role syntax check
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
--syntax-check
參數(shù)進(jìn)行基本的語法檢測,較進(jìn)階的作法則是借由 Docker 進(jìn)行測試。notifications
和 webhooks
發(fā)送通訊給 Galaxy。 1將范例 Role 左方的開關(guān)切至 on 以整合 Travis CI。
建立完畢,等待觸發(fā),這時的 build state 會是 unknown。
使用 git push
到 GitHub 后,Travis CI 會自動觸發(fā)。
若想把 build state 的 badge 放入 README.md
,可點擊該 badge 獲得各式語法。
回到 Galaxy 網(wǎng)站,會發(fā)現(xiàn)多了 build state 的 badge。
以上,恭喜您學(xué)會了在 Roles 加入 Travis CI 自動化測試的技能。
凍仁提醒您:「當(dāng) build state badge 顯示 fail 時,記得回頭修一下 Roles 喔!」
此文發(fā)布不到一天,凍仁就收到熱心網(wǎng)友回報的 bug issue。百忙之中上了 hotfix 修正,并確認(rèn) Travis CI 測試無誤。
仔細(xì)回想,要是當(dāng)初沒這么做,誰又可以確保半年前寫的 code 現(xiàn)在還可以正常運作呢!
1. 凍仁半年前剛使用 Galaxy 和 Travis CI 時,要讓 Travis CI 發(fā)通知到 Galaxy,除了.travis.yml
要寫notifications
,還需手動于 Galaxy 設(shè)置 Travis CI 的 Token;而現(xiàn)在已不需額外設(shè)置 Travis CI Token 了。 ?
更多建議: