iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 27
0
DevOps

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

27. 怎麼用 Travis CI 測試 Roles?

現代 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

    1. 將左方的開關切換至 on。
    2. 於 Git Repository 裡新增 .travis.yml
    3. 使用 git push 即會觸發 Travis CI。
  6. 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]
  7. 將範例 Role 左方的開關切至 on 以整合 Travis CI。
    2016-12-27-test-role-with-travis-6.gif

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

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

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

  11. 回到 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 現在還可以正常運作呢!

相關連結

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


上一篇
26. 怎麼在 Ansible Galaxy 分享 Roles?(下)
下一篇
28. 怎麼混用 Ansible 建置 Docker image?
系列文
現代 IT 人一定要知道的 Ansible 自動化組態技巧31

尚未有邦友留言

立即登入留言