How to integrateGitLab CICD into B2B service
Mobagel DevOps Lead - Alex Su
GitLab Taipei User Group
2.
GitLab Taipei UserGroup
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
GitLab Taipei UserGroup
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
GitLab Taipei UserGroup
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.
GitLab Taipei UserGroup
- CI / CD 工具鏈的整合是一個漸進的過程,並非一步到位。
- 隨著軟體的開發和組織的發展,工具也必須與時俱進。
- DevOps 工具之間的能不能深度整合很重要。
✨
✨
GitLab Taipei UserGroup
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.
GitLab Taipei UserGroup
從 Jenkins 轉換到 GitLab CI 其實並沒有太大的負擔,主要原因是:
- 依然採用原先 CI / CD pipeline 的設計,團隊也早已習慣。
- 每個 repo 都有基於相似邏輯撰寫的 interface (make build, make test)
,operation scripts 的完整度高。
- GitLab CI 學習曲線較低。
GitLab Taipei UserGroup
採用 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.
GitLab Taipei UserGroup
Releaser
Pull Images Download Tools
Storage
Tar Archive
採用 GitLab CI 之後 Software Delivery
Install.sh with payload
trigger notification
upload
docker save
GitLab Taipei UserGroup
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 對系統操作
GitLab Taipei UserGroup
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.
GitLab Taipei UserGroup
GitLab Runner Management
server A
server B
server C
server D
使用 Ansible 管理 GitLab Runner 組態設定(config.toml)。
GitLab CI
Configuration
Run
PushPull
Ansible
GitLab Taipei UserGroup
Developer Operation
採用 GitLab CI + GitLab Runner 後, 因為語法容易、文檔支持豐富,
能夠大量降低 DevOps CI / CD 的學習門檻,減少教育訓練的成本,
對於團隊推廣 DevOps 文化很有幫助。
close close
49.
GitLab Taipei UserGroup
不論是使用什麼工具,DevOps 的核心價值是能夠以更全局的角度,
理解團隊面臨的困境,替團隊解決開發上以及文化上面臨到的各種
問題。
CI / CD 規劃
Start
End
快速部署穩定交付 Bridging the gap between teams
資訊落差