Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CI on OpenStack

CI on OpenStack

OpenStack Day Taiwan 2017
串接持續整合(CI)到 OpenStack 上
持續整合(CI)已儼然成為現今軟體開發流程中極為重要的一環,然而一般持續整合服務不一定能夠提供所需的測試環境。介紹如何使用 OpenStack Python SDK,如何透過常見持續整合服務串接 OpenStack ,建立自由彈性的環境作為整合測試(Integration Testing)。

Cee80559471f68b7a5134ac8f3e60187?s=128

Date Huang

July 18, 2017
Tweet

Transcript

  1. 串接持續整合(CI)到 OpenStack Yu-Chiang Huang @NCTU CS SQLab tjjh89017@hotmail.com

  2. 核心概念就是一句話 「Computer Science 是追求自動化的科學」

  3. About me • 黃宇強 • 交通大學軟體品質實驗室碩士研究生 • 亂點技能樹 ◦ OpenStack

    on ARM64 ◦ BT Transfer ◦ Security LinuxCon China 2017
  4. 過去 • 如果我們測試一個軟體 • 大概會 ◦ 準備一台虛擬機 ◦ 安裝相依套件 ◦

    編譯原始碼 ◦ 測試
  5. None
  6. 過去 • 如果我們測試一個軟體,但是他要多節點的,可能跟網路相關的 • 大概會 ◦ 準備一台虛擬機 ◦ 安裝相依套件 ◦

    編譯原始碼 ◦ 複製虛擬機成多台 ◦ 修正網路架構 ◦ 把每一台虛擬機打上指令
  7. None
  8. 持續整合 Continuous integration • 簡介 CI • 為什麼要 CI

  9. 簡介 CI • 一種軟體工程上的概念 ◦ 衍生自極限編程(Extreme programming) • 志在解決不同分支(branch)整合問題 ◦

    分支過多導致整合難度上升 • 自動化 ◦ 自動建置 ◦ 自我測試 ◦ 自動部署
  10. 為什麼要 CI • 在每一次的修改中就發現錯誤 ◦ 及早發現整合上的錯誤 ◦ 解決合併衝突(Merge Conflict)

  11. 為什麼要 CI • 在每一次的修改中就發現錯誤 ◦ 及早發現整合上的錯誤 ◦ 解決合併衝突(Merge Conflict) •

    自動化處理 ◦ 避免手動操作,提高生 產力 ◦ 避免手動操作低級錯誤
  12. 為什麼要 CI • 在每一次的修改中就發現錯誤 ◦ 及早發現整合上的錯誤 ◦ 解決合併衝突(Merge Conflict) •

    自動化處理 ◦ 避免手動操作,提高生 產力 ◦ 避免手動操作低級錯誤 • 盡可能的維持 master branch 的單一性
  13. None
  14. 常見 CI 服務 • Travis-CI ◦ 整合 Github • GitLab-CI

    ◦ 整合 Gitlab • Jenkins ◦ 大量第三方插件
  15. Travis-CI 使用 • 以 fish-shell 為例 ◦ https://github.com/fish-shell/fish-shell/blob/master/.travis.yml

  16. None
  17. None
  18. CI 服務的限制 • 現行 CI server 多為 Container-based,少數 VM-based ◦

    環境不夠彈性 • 多半提供過舊的套件 ◦ Travis-CI 目前只提供到 Ubuntu Trusty (14.04) 的環境 • 特殊環境 ◦ 沒有辦法提供特殊環境 ◦ 例如:arm64
  19. OpenStack API • REST API ◦ 難度:高 ◦ 語言:只要能發 HTTP

    Request 就能用 ◦ 文件:完整 ◦ https://docs.openstack.org/api/ • OpenStack SDK ◦ 難度:低 ◦ 語言:官方只提供比較常見的語言 ◦ 文件:更新較慢 ◦ https://docs.openstack.org/user-guide/sdk.html
  20. None
  21. None
  22. DEMO 環境 • OpenStack ◦ OpenStack on ARM64 ◦ https://speakerdeck.com/tjjh89017/openstack-on-armv8

    • 測試軟體 ◦ EZIO, BT-based Multi-PC Deployment Tool ◦ https://speakerdeck.com/tjjh89017/ezio-torrent-based-recovery ◦ https://github.com/tjjh89017/ezio
  23. Reference https://dotblogs.com.tw/hatelove/archive/2011/12/25/introducing-continuous-integration.aspx https://samkuo.me/post/2013/10/continuous-integration-deployment-delivery/ http://ithelp.ithome.com.tw/articles/10109773 https://docs.openstack.org/ https://developer.openstack.org/ https://docs.travis-ci.com/