- 前言
- Ansible 是什么?
- 怎么部署 Ansible 环境?
- 怎么用 Vagrant 练习 Ansible?
- 怎么用 Docker 练习 Ansible?
- 怎么操作 Ansible?
- 怎么用 Jupyter 操控 Ansible?(localhost)
- 怎么用 Jupyter 操控 Ansible?(Managed node)
- 怎么用 Docker Compose 练习 Ansible?
- Ansible 的开发工具有哪些?
- 怎么看 Ansible Modules 文件?
- 常用的 Ansible Module 有哪些?
- 怎么使用 setup 取得 Managed node 的 facts?
- 怎么使用 Ansible 的 Template 系统?
- 怎么在 Playbooks 里使用 Handlers?
- Ansible 如何发送 notification 到 Slack?
- Ansible 如何发送 notification 到 HipChat?
- 如何在 Playbooks 使用 loops?
- 如何维护大型的 Playbooks?
- Roles 是什么?
- 怎么使用 Roles?
- 怎么用 Roles 部署 LNMP 网页应用程式?(上)
- 怎么用 Roles 部署 LNMP 网页应用程式?(下)
- 怎么用 Roles 部署 TestLink?
- 怎么在 Ansible Galaxy 分享 Roles?(上)
- 怎么在 Ansible Galaxy 分享 Roles?(下)
- 怎么用 Travis CI 测试 Roles?
- 怎么混用 Ansible 建置 Docker image?
- 怎么在 Docker Hub 混用 Ansible 自动建置 Docker image?
- 怎么用 Vault 管理敏感资料?
- 总结
怎么用 Travis CI 测试 Roles?
現代 IT 人一定要知道的 Ansible 自動化組態技巧
27. 怎麼用 Travis CI 測試 Roles?
在「好的 Roles 應具備什麼?」一節裡,凍仁曾提過好的 Roles 應導入 Travis CI 整合測試,有了持續整合 (CI) 才能確保每次提交的品質。
接下來將以 chusiang.helloworld
這個簡單的 role 為例,讓凍仁帶大家串起 GitHub, Galaxy 和 Travis CI 三個服務。
撰寫一個 Role,並上傳至 GitHub。 https://github.com/chusiang/helloworld.ansible.role
於 Galaxy 網站進行匯入,詳請請參考「怎麼在 Galaxy 匯入 Roles?」一節。 https://galaxy.ansible.com/chusiang/helloworld/
進入 Travis CI 網站。
點擊左上角的 ✚ 整合新 Repository。
只需三個步驟即可整合 Travis CI。
- 將左方的開關切換至 on。
- 於 Git Repository 裡新增
.travis.yml
。 - 使用
git push
即會觸發 Travis CI。
chusiang.helloworld/.travis.yml
的內容如下。--- 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
參數進行基本的語法檢測,較進階的作法則是藉由 Docker 進行測試。 - 使用
notifications
和webhooks
發送通訊給 Galaxy。 1
- 此例用了
將範例 Role 左方的開關切至 on 以整合 Travis CI。
建立完畢,等待觸發,這時的 build state 會是 unknown。
使用
git push
到 GitHub 後,Travis CI 會自動觸發。若想把 build state 的 badge 放入
README.md
,可點擊該 badge 獲得各式語法。回到 Galaxy 網站,會發現多了 build state 的 badge。
以上,恭喜您學會了在 Roles 加入 Travis CI 自動化測試的技能。
凍仁提醒您:「當 build state badge 顯示 fail 時,記得回頭修一下 Roles 喔!」
後語
此文發佈不到一天,凍仁就收到熱心網友回報的 bug issue。百忙之中上了 hotfix 修正,並確認 Travis CI 測試無誤。
仔細回想,要是當初沒這麼做,誰又可以確保半年前寫的 code 現在還可以正常運作呢!
相關連結
1. 凍仁半年前剛使用 Galaxy 和 Travis CI 時,要讓 Travis CI 發通知到 Galaxy,除了.travis.yml
要寫notifications
,還需手動於 Galaxy 設置 Travis CI 的 Token;而現在已不需額外設置 Travis CI Token 了。 ↩
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论