Cheng Wei Chen @ MOPCON 2020 / UnconfPhoto by insung yoon on Unsplash
GitLab Auto DevOps 大解析
— CI/CD 原來可以這樣做
DevOps Taiwan Community
https://devopstw.club
加入 GitLab Hero !
https://about.gitlab.com/community/heroes/
天瓏資訊圖書預購網址

https://bit.ly/3okmvAa
ISBN: 9789864345311
Unconf 先交流一下吧
Photo by Camylla Battani on Unsplash
有使⽤用 GitLab 嗎?有使⽤用 Auto DevOps 嗎?
有負責經⼿手 CI/CD Pipeline 的相關⼯工作嗎?
有使⽤用 K8s 嗎?應⽤用程式已經容器化了了嗎?
Q: CI/CD 最大的難關?
Photo by Marcos Paulo Prado on Unsplash
安全性?權限?串串接各種服務?打通各個環節?
必須處理理各種不同的環境?必須符合 Production 環境所需的檢核條件?
相依性管理理?Artifacts 的⽣生命週期管理理?
Photo by Sweet Ice Cream Photography on Unsplash
CI / CD / Automation
軟體開發新顯學
!!!
???
並不是,CI/CD 是個老東西
圖片來來源: http://finda.photo/image/11418
工程師 自動化
老闆 省時、省錢、省資源
code build test release deploy operateplan
Continuous Integration
Continuous Delivery
Automation
CI/CD/Automation
Continuous Deployment
CIcommit dev stagingtest
testprod deploy
environment
dev
staging
prod
local
Infrastructure
as
Code
要處理理許多環節、不同專案所需的 Pipeline 不盡相同。
GitLab Auto DevOps
Auto
https://docs.gitlab.com/ee/topics/autodevops/#features
GitLab Auto DevOps
Auto
沒這麼 Auto 是有條件的
Commit
檢查 .gitlab-ci.yml
GitLab
Server
產⽣生 CI/CD Pipeline
GitLab
Runner 1
有適合我執⾏行行的
CI Job 嗎?
有喔!很多 Job 都指名要你
執行 Job
CI Job
回傳 CI Logs
顯⽰示於 Pipeline
GitLab
Runner 2沒有吻合 Tag 的 Job,
那我先休息嘍。
Commit
檢查 Auto DevOps 相關參參數
GitLab
Server
產⽣生 CI/CD Pipeline
GitLab
Runner 1
執行 Job
CI Job
K8s
GitLab 代管⼀一切
提供資源
提供資源
KubernetesGitLab CI Auto
DevOps
Prometheus
+ =
Template
KubernetesGitLab CI Auto
DevOps
Prometheus
+ =
Template
Container
Cloud Native
Container Orchestration
Monitor Metric
Operation
Multi Environment
KubernetesGitLab CI Auto
DevOps
Prometheus
+ =
Template
GitLab CI Runner
.gitlab-ci.yml
標準化
客製化
Pipeline 需要兼具

標準化與客製化
應用程式所需的 environment?
Deploy
找出最大公約數,標準化
如何取得 Artifacts?
是否有其他初始化的動作?
如何因應「部署失敗」?
如何連上主機? 需要額外的組態管理?
如何因應「重新部署」?
x2 x2 x3
x3x2
x3 x2
大致標準化,預留客製空間
tasks:
- name: download artifacts
get_url: artifacts.zip
- name: setup env
templates: nginx.conf
- name: reload nginx
services: nginx reload
tasks:
- name: download scripts
get_url: deploy.sh
- name: run scripts
command: sh deploy.sh
Auto DevOps CI Template
https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/
templates/Auto-DevOps.gitlab-ci.yml
Auto DevOps CI Template 的起點
https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/
templates/Jobs/Build.gitlab-ci.yml
可以依序深入其他的 Template 查看內容
https://gitlab.com/gitlab-org/gitlab-foss/-/blob/master/lib/
gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml
可以依序深入其他的 Template 查看內容
https://docs.gitlab.com/ee/topics/autodevops/customize.html
Auto DevOps 運⽤用 heroku buildpack
來來⾃自動判斷 Stage: Build 該做哪些事情
https://docs.gitlab.com/ee/topics/autodevops/
customize.html#environment-variables
有許多專⽤用的 Variables,可以⽤用來來設定 Auto DevOps。
結語
Auto DevOps
是個好東西
Auto DevOps
但想要上手沒那麼容易
想要善用 Auto DevOps
須具備 Container 與 K8s 的知識
Container 與 Cloud Native (K8s),仍是
重要的未來趨勢,在經手 CI/CD Pipeline
的路上遲早會碰上的。
CI/CD 能夠帶來許多好處
但CI/CD的坑,比你想像的多
Oooops
CI/CD需要的資源(人力、工時),
也比你想像的多
CI/CD需要的評估關鍵,
也同樣比你想像的多
• 最⼤大的痛點是什什麼?
• 什什麼可以⾃自動化?哪些無法⾃自動化?
• 是否真的有必要⾃自動化?
• CI/CD/⾃自動化發⽣生故障,

該如何處理理?
• 可以持續投入多少資源?
思考並評估
Photo by Sweet Ice Cream Photography on Unsplash
無法被自動化的事情比人們想像中的少!
Photo by Sweet Ice Cream Photography on Unsplash
自動化是一種力量倍增器,但不是萬靈丹!
工商服務
https://devopstw.club
加入 GitLab Hero !
https://about.gitlab.com/community/heroes/
天瓏資訊圖書預購網址

https://bit.ly/3okmvAa
ISBN: 9789864345311
Photo by Clark Tibbs on Unsplash
Thank You

GitLab Auto DevOps 大解析—CI/CD 原來可以這樣做