Slide 1

Slide 1 text

串接持續整合(CI)到 OpenStack Yu-Chiang Huang @NCTU CS SQLab [email protected]

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

About me ● 黃宇強 ● 交通大學軟體品質實驗室碩士研究生 ● 亂點技能樹 ○ OpenStack on ARM64 ○ BT Transfer ○ Security LinuxCon China 2017

Slide 4

Slide 4 text

過去 ● 如果我們測試一個軟體 ● 大概會 ○ 準備一台虛擬機 ○ 安裝相依套件 ○ 編譯原始碼 ○ 測試

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

過去 ● 如果我們測試一個軟體,但是他要多節點的,可能跟網路相關的 ● 大概會 ○ 準備一台虛擬機 ○ 安裝相依套件 ○ 編譯原始碼 ○ 複製虛擬機成多台 ○ 修正網路架構 ○ 把每一台虛擬機打上指令

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

持續整合 Continuous integration ● 簡介 CI ● 為什麼要 CI

Slide 9

Slide 9 text

簡介 CI ● 一種軟體工程上的概念 ○ 衍生自極限編程(Extreme programming) ● 志在解決不同分支(branch)整合問題 ○ 分支過多導致整合難度上升 ● 自動化 ○ 自動建置 ○ 自我測試 ○ 自動部署

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

為什麼要 CI ● 在每一次的修改中就發現錯誤 ○ 及早發現整合上的錯誤 ○ 解決合併衝突(Merge Conflict) ● 自動化處理 ○ 避免手動操作,提高生 產力 ○ 避免手動操作低級錯誤 ● 盡可能的維持 master branch 的單一性

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

常見 CI 服務 ● Travis-CI ○ 整合 Github ● GitLab-CI ○ 整合 Gitlab ● Jenkins ○ 大量第三方插件

Slide 15

Slide 15 text

Travis-CI 使用 ● 以 fish-shell 為例 ○ https://github.com/fish-shell/fish-shell/blob/master/.travis.yml

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

CI 服務的限制 ● 現行 CI server 多為 Container-based,少數 VM-based ○ 環境不夠彈性 ● 多半提供過舊的套件 ○ Travis-CI 目前只提供到 Ubuntu Trusty (14.04) 的環境 ● 特殊環境 ○ 沒有辦法提供特殊環境 ○ 例如:arm64

Slide 19

Slide 19 text

OpenStack API ● REST API ○ 難度:高 ○ 語言:只要能發 HTTP Request 就能用 ○ 文件:完整 ○ https://docs.openstack.org/api/ ● OpenStack SDK ○ 難度:低 ○ 語言:官方只提供比較常見的語言 ○ 文件:更新較慢 ○ https://docs.openstack.org/user-guide/sdk.html

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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/