Ansible 用 Travis CI 測(cè)試 Roles

2018-07-25 11:10 更新

怎么用 Travis CI 測(cè)試 Roles?

在「好的 Roles 應(yīng)具備什么?」一節(jié)里,凍仁曾提過(guò)好的 Roles 應(yīng)導(dǎo)入 Travis CI 整合測(cè)試,有了持續(xù)整合 (CI) 才能確保每次提交的品質(zhì)。

接下來(lái)將以 chusiang.helloworld 這個(gè)簡(jiǎn)單的 role 為例,讓凍仁帶大家串起 GitHubGalaxy 和 Travis CI 三個(gè)服務(wù)。

automate_with_ansible_practice-30.jpg

  1. 撰寫(xiě)一個(gè) Role,并上傳至 GitHub。 2016-12-27-test-role-with-travis-1.pnghttps://github.com/chusiang/helloworld.ansible.role

  2. 于 Galaxy 網(wǎng)站進(jìn)行匯入,詳請(qǐng)請(qǐng)參考「怎么在 Galaxy 匯入 Roles?」一節(jié)。 2016-12-27-test-role-with-travis-2.pnghttps://galaxy.ansible.com/chusiang/helloworld/

  3. 進(jìn)入 Travis CI 網(wǎng)站。 2016-12-27-test-role-with-travis-3.png

  4. 點(diǎn)擊左上角的 ? 整合新 Repository。 2016-12-27-test-role-with-travis-4.png

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

    1. 將左方的開(kāi)關(guān)切換至 on。
    2. 於 Git Repository 里新增 .travis.yml
    3. 使用 git push 即會(huì)觸發(fā) Travis CI。
  6. 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)行基本的語(yǔ)法檢測(cè),較進(jìn)階的作法則是借由 Docker 進(jìn)行測(cè)試。
    • 使用 notifications 和 webhooks 發(fā)送通訊給 Galaxy。 1
  7. 將范例 Role 左方的開(kāi)關(guān)切至 on 以整合 Travis CI。 2016-12-27-test-role-with-travis-6.gif

  8. 建立完畢,等待觸發(fā),這時(shí)的 build state 會(huì)是 unknown。 2016-12-27-test-role-with-travis-7.png

  9. 使用 git push 到 GitHub 后,Travis CI 會(huì)自動(dòng)觸發(fā)。 2016-12-27-test-role-with-travis-8.png

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

  11. 回到 Galaxy 網(wǎng)站,會(huì)發(fā)現(xiàn)多了 build state 的 badge。 2016-12-27-test-role-with-travis-9.png

以上,恭喜您學(xué)會(huì)了在 Roles 加入 Travis CI 自動(dòng)化測(cè)試的技能。

凍仁提醒您:「當(dāng) build state badge 顯示 fail 時(shí),記得回頭修一下 Roles 喔!」

后話

此文發(fā)布不到一天,凍仁就收到熱心網(wǎng)友回報(bào)的 bug issue。百忙之中上了 hotfix 修正,并確認(rèn) Travis CI 測(cè)試無(wú)誤。

仔細(xì)回想,要是當(dāng)初沒(méi)這么做,誰(shuí)又可以確保半年前寫(xiě)的 code 現(xiàn)在還可以正常運(yùn)作呢!

相關(guān)連結(jié)

1. 凍仁半年前剛使用 Galaxy 和 Travis CI 時(shí),要讓 Travis CI 發(fā)通知到 Galaxy,除了 .travis.yml 要寫(xiě) notifications,還需手動(dòng)于 Galaxy 設(shè)置 Travis CI 的 Token;而現(xiàn)在已不需額外設(shè)置 Travis CI Token 了。 ?


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)