Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

How to integrate GitLab CICD into B2B service

107 vues

Publié le

Jul 2020, GitLab Taipei User Group

Publié dans : Ingénierie
  • Soyez le premier à commenter

How to integrate GitLab CICD into B2B service

  1. 1. How to integrate GitLab CICD into B2B service Mobagel DevOps Lead - Alex Su GitLab Taipei User Group
  2. 2. GitLab Taipei User Group Jul 2020 GitLab Taipei user Group About Me April 2019 Alex joined Mobagel 🚀 ● DevOps workflow design and tuning ● Software delivery and deployment for Mobagel products ● Bridging the gap between teams April 2020 加入 Mobagel 一週年 🎉 🚨 Scope
  3. 3. GitLab Taipei User Group Decanter AI 軟體介紹
  4. 4. GitLab Taipei User Group 為企業打造的 AI 數據分析系統
  5. 5. GitLab Taipei User Group Features Guided Workflow Exploratory Data Analysis Auto Data Preprocessing Auto Model Building Auto Model Evaluation Model Deployment Feature Importance Time Series Prediction Deep Learning GPU Acceleration Scala-Based Architecture Enterprise Deployment Mobagel Website
  6. 6. GitLab Taipei User Group 上傳資料 設定預測目標 下載分析結果 Mobagel Website
  7. 7. GitLab Taipei User Group Challenges
  8. 8. GitLab Taipei User Group 與日俱增的壓力 Company Product Development ● 團隊人數成長 ● Reviewer 負擔重 ● B2B software delivery ● Deployment process ● 很難駕馭的 Production env. ● 無 CI /CD ● 無自動化測試 ● 有限的單元測試
  9. 9. GitLab Taipei User Group What can we do?
  10. 10. GitLab Taipei User Group 測試自動化 Create merge request Test Merged developer Reviewer ✨ 專注 code review 頻繁提交程式碼 提高程式碼品質 ✨ ✨ 降低團隊負擔 👻 Must automation!
  11. 11. GitLab Taipei User Group 自動化部署、測試、封裝 Create merge request Test Merged Build Deploy Test Archive Merged 後的部署、測試、 封裝也是很重要的!
  12. 12. GitLab Taipei User Group B2B Software Delivery 企業 B 企業 C 企業 D Decanter AI 企業 A IT Deploy IT Deploy IT Deploy Deploy 產品開發 😮 產品必須封裝成安裝包的形式交付。 😮 部分工具的使用會受到限制。 😮 必須支援系統環境的自動化設置。 😮 支援一鍵部署。 Release 派 人 至 企 業 D 部 署 Dev Ops 挑戰 🤔 企業內部不一定可以連接外部網 路。 🤔 產品必須能夠應付企業內部伺服 器各種狀況。 🤔 部署的流程簡單清楚。 🤔 企業內部 IT 不一定有能力除錯。 🤔 產品的穩定性必須極高。 🤔 豐富的文檔支持。 IT
  13. 13. GitLab Taipei User Group 從 0 開始的 DevOps Workflow
  14. 14. GitLab Taipei User Group 那些年曾經使用的工具們,有的留下 有的發現不適合,而悄悄離去... 🥺 GitLabGitLab Runner Bamboo Jira Docker GrayLog AirtableWhimsicalAnsibleSeleniumJenkinsSlack Swarm Cypress Bitbucket Harbor Notion TestRail
  15. 15. GitLab Taipei User Group Now DevOps 工具演進時間軸 April 2019 - Atlassian tools - Slack March 2020 Migrate from Jenkins to GitLab CI May 2020 E2E test with Cypress May 2019 - Migrate to GitLab - Use Jenkins as CI server - Issue tracking: Jira July 2019 - 整合 E2E 自動化測試 - Docker - Container registryAlex join Mobagel 沒有列出所有工具,不然擠不下 😅
  16. 16. GitLab Taipei User Group - CI / CD 工具鏈的整合是一個漸進的過程,並非一步到位。 - 隨著軟體的開發和組織的發展,工具也必須與時俱進。 - DevOps 工具之間的能不能深度整合很重要。 ✨ ✨
  17. 17. GitLab Taipei User Group 開發前期 - Atlassian 全家桶
  18. 18. GitLab Taipei User Group ● 用途 - 使用 Bitbucket 作為 development platform,Jira 作為 issue tracking,Bamboo 為 CI server ● 方案 - Self-managed - USD 10 one-time payment ● 優勢 - 團隊人數: 10 人以下 - Atlassian 工具鏈易於整合 ● 劣勢 - 隨著開發人數增長,價格負擔逐漸變重
  19. 19. GitLab Taipei User Group Bitbucket Pricing 隨著團隊人數的增加,負擔越來越高 尤其是開發人數如果介於 11 ~ 15 之間就會很尷尬。
  20. 20. GitLab Taipei User Group - 是否有其他替代方案可以取代 Bitbucket 和 Baomboo ? - Jira 作為 issue tracking 的功能影響較小,可以繼續沿用 - 因為 Jira 繼續沿用,替代的工具要與 Jira 有良好的整合 - Jira issues 必須要能顯示相關的 Git commit - 可以從 code platform 連結到 Jira issues 🤔
  21. 21. GitLab Taipei User Group Let’s start with GitLab and Jenkins
  22. 22. GitLab Taipei User Group ● Why use GitLab - Open source - Support a complete DevOps platform - 與其他 DevOps 工具的整合很容易,可打造以 GitLab 為中心的工具鏈。 ● 方案 - Self-managed - Bronze / Starter - Enterprise Edition
  23. 23. GitLab Taipei User Group Why choose Bronze / Starter Plan?
  24. 24. GitLab Taipei User Group Merge request approvals!
  25. 25. GitLab Taipei User Group Merge request approvals GitLab Doc 自動化測試還沒有成熟的時候,團隊很 仰賴 Code review 把關品質。 Premium Only
  26. 26. GitLab Taipei User Group ● Why use Jenkins - Open source - 有別於 GitLab CI / CD 的 UI,Jenkins 提供一個可 以統一管理Jobs 的 Dashboard - 容易與 GitLab CI / CD 整合 - 豐富的 Plugins ● 方案 - Self-managed - Free
  27. 27. GitLab Taipei User Group Jenkins & GitLab UI 比較 Jenkins GitLab 😀 畫面乾淨 😀 彈性可調整 view 的 dashboard 😣 UI 不直觀 😣 沒有可調整 view 的 dashboard
  28. 28. GitLab Taipei User Group CI / CD Pipeline Design
  29. 29. GitLab Taipei User Group Development Flow developer Unit Test Lint Check DeployBuild E2E Test Reviewer ✨ ✨ docker pull docker push merge request link to Jira issue trigger trigger notification trigger Merge request 經過 Reviewers approve,且已經合 併的時候,會在 server 部署一台 Decanter AI 進行 E2E test。 若測試沒通過或是 reviewer 不同 意,Developers 需要修到通過為 止。 在 Harbor container registry 上事先建 立好一個專門用來儲存 CI / CD 產生的 image 的庫。 以 Selenium 寫成的 E2E test,測試的 scenarios 不 宜太多,不然會花太多測試的時間。
  30. 30. GitLab Taipei User Group Releaser Pull Images Download Tools Storage Tar Archive Software Delivery Install.sh with payload trigger notification upload 因為 production 的環境有可能沒有辦法連接網 路,所有的 tools (e.g., docker, zip, rsync) 下載下 來後封裝成 tar archive。 docker save 執行 docker save 指令,將 image 封裝成 tar archive。 為了減少檔案的數量,所有的 tar archive 會附加 到 install.sh 成一份執行檔。 最後再將執行檔經由 FTP 儲存。
  31. 31. GitLab Taipei User Group - 將 Jenkins 整合進 GitLab CI / CD 的架構,持續使用了快一年,但後來仍然 發現了一些問題,迫使在今年決定捨棄 Jenkins,使用 GitLab 開發的 GitLab Runner。 - CI / CD workflow 流程雖然看起來大同小異,但實際運作起來,仍會有不同 層面的問題要解決 (例如:團隊文化、教育訓練)
  32. 32. GitLab Taipei User Group Jenkins 帶來的問題 必須額外管理 Plugins,定時檢查 release note 或 security issue。 對於剛入門 DevOps 的工程師來說, 會對 Jenkins 的 plugins 生態系有點不知所措。
  33. 33. GitLab Taipei User Group Jenkins 帶來的問題 Developers 必須在 GitLab 和 Jenkins 兩個視窗來回查看。 Jenkins GitLab
  34. 34. GitLab Taipei User Group Jenkins 帶來的問題 - GitLab CI 和 Jenkins 雖然容易整合,但卻無法深度整合,一些很好用的 GitLab 原生功能都沒有支持 (例如: 在一個 merge request 顯示多個 build result )。 - 團隊繁忙的情況下,還必須額外管理 Jenkins。 - 長久下來增加不少開發者的學習成本,降低團隊學習 DevOps 的意願。 ✨ ✨
  35. 35. GitLab Taipei User Group 擁抱 GitLab Runner
  36. 36. GitLab Taipei User Group Jenkins v.s. GitLab Runner 😀 Better integration with GitLab 😀 Easy setup 😀 Don’t need to host additional CI server 😀 Lower learning curve for developers 😀 Better documents supports 😀 Easy to browse / download artifacts 😣 Can’t show multiple status in a merge request 😣 Need to switch between GitLab and Jenkins 😣 Need to manage plugins 😀 Show all the CI jobs with a dashboard
  37. 37. GitLab Taipei User Group 從 Jenkins 轉換到 GitLab CI 其實並沒有太大的負擔,主要原因是: - 依然採用原先 CI / CD pipeline 的設計,團隊也早已習慣。 - 每個 repo 都有基於相似邏輯撰寫的 interface (make build, make test) ,operation scripts 的完整度高。 - GitLab CI 學習曲線較低。
  38. 38. GitLab Taipei User Group 語法直觀貼近使用者 Maintain Maintain .gitlab-ci.yml .gitlab-ci.yml 真 的很直觀呢! Dev Ops
  39. 39. GitLab Taipei User Group 豐富的文檔 GitLab Doc 遇到的問題在這裡幾 乎都可以找到解答! Dev
  40. 40. GitLab Taipei User Group 採用 GitLab CI 之後的 Development Flow developer Unit Test Lint Check DeployBuild E2E Test Reviewer ✨ ✨ docker pull docker push merge request link to Jira issue trigger 不必額外維護 CI server 真的減少很多負擔呢!
  41. 41. GitLab Taipei User Group Releaser Pull Images Download Tools Storage Tar Archive 採用 GitLab CI 之後 Software Delivery Install.sh with payload trigger notification upload docker save
  42. 42. GitLab Taipei User Group Pipeline Design - now and future
  43. 43. GitLab Taipei User Group GitOps Dev Ops CI CD Single Source of Truth Dev QA Staging Docker push GitLab CI 將 GitLab 作為唯一的 single source of truth,並透過 GitLab CI 部署至各種環境,Dev 和 Ops 團隊成員則是藉由 merge request 的方式提交操作申請。 code diff code diff merge request merge request 系統的每一次變更都對應一條Git commit code diff config config config Dev 和 Ops 皆透過 merge request 對系統操作
  44. 44. GitLab Taipei User Group Manual Deploy 😣 因為 UI 沒有提供下拉式選單,Input 的參數不能太多太複雜。 ● 用途 讓開發者或是非開發者,都能夠藉由手動輸入的 參數,將軟體部署到各種環境。 ● 環境參數 ACTION: 參考自DevOps cycle - deploy - release ENVIRONMENT: 部署環境 - dev - qa - nightly
  45. 45. GitLab Taipei User Group Auto Release flow Releaser release 4.8.0 Clone codebase update version commit and tag Build Deploy Pull images E2E test Manual test Download tools Tar archive install.sh Storage use a release tool as an interface, which support: - update version - rollback - sanity check - retag release 前最後一刻的把關 產品版號 產品封裝 最後的測試 release note docker push
  46. 46. GitLab Taipei User Group GitLab Runner Management server A server B server C server D 使用 Ansible 管理 GitLab Runner 組態設定(config.toml)。 GitLab CI Configuration Run PushPull Ansible
  47. 47. GitLab Taipei User Group 總結
  48. 48. GitLab Taipei User Group Developer Operation 採用 GitLab CI + GitLab Runner 後, 因為語法容易、文檔支持豐富, 能夠大量降低 DevOps CI / CD 的學習門檻,減少教育訓練的成本, 對於團隊推廣 DevOps 文化很有幫助。 close close
  49. 49. GitLab Taipei User Group 不論是使用什麼工具,DevOps 的核心價值是能夠以更全局的角度, 理解團隊面臨的困境,替團隊解決開發上以及文化上面臨到的各種 問題。 CI / CD 規劃 Start End 快速部署穩定交付 Bridging the gap between teams 資訊落差
  50. 50. GitLab Taipei User Group Mobagel 目前仍然持續修正 GitLab DevOps workflow,以期能夠更快 速更穩定的實現軟體交付和自動化測試。
  51. 51. GitLab Taipei User Group Fin.
  52. 52. GitLab Taipei User Group Notification Issue tracking Container registry Test CI MoBagel 2020

×