Skip to content

Latest commit

 

History

History
112 lines (73 loc) · 4.66 KB

27.how-to-test-the-roles-with-travis-ci.md

File metadata and controls

112 lines (73 loc) · 4.66 KB

現代 IT 人一定要知道的 Ansible 自動化組態技巧

27. 怎麼用 Travis CI 測試 Roles?

在「好的 Roles 應具備什麼?」一節裡,凍仁曾提過好的 Roles 應導入 Travis CI 整合測試,有了持續整合 (CI) 才能確保每次提交的品質。

接下來將以 chusiang.helloworld 這個簡單的 role 為例,讓凍仁帶大家串起 GitHub, Galaxy 和 Travis CI 三個服務。

automate_with_ansible_practice-30.jpg

  1. 撰寫一個 Role,並上傳至 GitHub。 2016-12-27-test-role-with-travis-1.png https://github.com/chusiang/helloworld.ansible.role

  2. 於 Galaxy 網站進行匯入,詳請請參考「怎麼在 Galaxy 匯入 Roles?」一節。 2016-12-27-test-role-with-travis-2.png https://galaxy.ansible.com/chusiang/helloworld/

  3. 進入 Travis CI 網站。 2016-12-27-test-role-with-travis-3.png

  4. 點擊左上角的 整合新 Repository。 2016-12-27-test-role-with-travis-4.png

  5. 只需三個步驟即可整合 Travis CI。 2016-12-27-test-role-with-travis-5.png

  6. 將左方的開關切換至 on。

  7. 於 Git Repository 裡新增 .travis.yml

  8. 使用 git push 即會觸發 Travis CI。

  9. 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 進行測試。
  • 使用 notificationswebhooks 發送通訊給 Galaxy。 1
  1. 將範例 Role 左方的開關切至 on 以整合 Travis CI。 2016-12-27-test-role-with-travis-6.gif

  2. 建立完畢,等待觸發,這時的 build state 會是 unknown2016-12-27-test-role-with-travis-7.png

  3. 使用 git push 到 GitHub 後,Travis CI 會自動觸發。 2016-12-27-test-role-with-travis-8.png

  4. 若想把 build state 的 badge 放入 README.md,可點擊該 badge 獲得各式語法。 2016-12-27-test-role-with-travis-10.png

  5. 回到 Galaxy 網站,會發現多了 build state 的 badge。 2016-12-27-test-role-with-travis-9.png

以上,恭喜您學會了在 Roles 加入 Travis CI 自動化測試的技能。

凍仁提醒您:「當 build state badge 顯示 fail 時,記得回頭修一下 Roles 喔!」

後語

此文發佈不到一天,凍仁就收到熱心網友回報的 bug issue。百忙之中上了 hotfix 修正,並確認 Travis CI 測試無誤。

仔細回想,要是當初沒這麼做,誰又可以確保半年前寫的 code 現在還可以正常運作呢!

相關連結

Footnotes

  1. 凍仁半年前剛使用 Galaxy 和 Travis CI 時,要讓 Travis CI 發通知到 Galaxy,除了 .travis.yml 要寫 notifications,還需手動於 Galaxy 設置 Travis CI 的 Token;而現在已不需額外設置 Travis CI Token 了。