owned this note changed 5 years ago
Linked with GitHub

CI / CD / DevOps Pipeline Tools 大亂鬥

開場

devopsdays 10/16 ~ 10/18

aws

講者 Mr. 沙先生 or Mr. 礦物先生

  • AWS CodeCommit
    • git
    • 無限 private
    • 五位以下免費 第六位以後一個人一美/月
  • CodeBuild
    • CI持續整合服務
    • 不是只能用AWS服務
      • 可用github bitbucket jenkins S3
    • 可跑在VPC內網
    • 適合大量job build 同時執行
    • 價格
      • 免費額度
      • 每個月 100 build.genneral1.small 建置分鐘數
  • CodeDeploy
    • CD
    • 支援
      • lambda
      • ec2
      • on-premise instance
      • ecs
    • 使用 CodeDeploy Agent實現
    • 價格
      • AWS 服務免費
      • on-premise 每次 0.02美 (台)
  • Code Pineline
    • CI / CD Workflow
    • 支援情境
      • source
      • Approval 檢核點

why clud tools

QA

  1. Pipeline 會不會遇到EOL

基本上不會
但是API可能會因為維護改版

  1. 可以跑在EKS上嗎

目前還沒支援,但是可以透過 Codebuild 用 CLI 來更換 image and tasks

  1. cross account?

可以跨帳號使用,必須透過 IAM Role 和 KMS 做到,但是 Web console 不支援,必須使用 CLI 建立跨帳號的 Pipeline。
Ref: https://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/pipelines-create-cross-account.html#pipelines-create-cross-account-create-key

Azure

講者 董大偉

關於 DevOps

  • 我最在意的事情
    • 透明度
  • 建立一條包含 autotest

五人以下免費

live demo

可以到marketplace 找現成的task

CircleCI

講者 Hwchiu

  • host

    • Cloud
      • Price base on concurrent job
    • server
      • Price: per host
  • Projects

    • github / Bitbucket
  • SSH debug

  • Parallelism

    • 減少執行時間
  • configuration

    • yaml
    • clt/webportabl
  • running Environment

    • container
    • vm
    • macos
  • commands

    • remove duplicate code
    • Function based
    • simplify config
  • orbs

    • package your commands/jobs
    • share with others
    • only supply public

live demo

有工具可以本地端驗證config 語法是否正確

orbs 有slack等工具可以用

cache save get

drone

講者 appleboy

opensource

Drone Cloud

設定

設定用yaml

支援 ARM跟windows

有設定depends_on會啟動平行處理?

yaml程式化
secret manager 支援

crontab 可設定區間

gitlab > drone
drone convert .gitlab-ci.yaml

很多BUG

gitlab cache > drone
只能用外部CACHE ?

autoscaler

infra

  • server
  • agent

server

  • SSL
    • let's Encrypt
  • database

plugin

container base

QA

  1. 放cloud還是自建
    看需求
    要用的話用1.0

  2. 支援斷點
    沒有手動確定機制

  3. 執行環境是否一致
    不大可能不同step使用差太多的環境
    不過還是看需求

  4. 手動驅動job
    plugin實現

GCP

SKaffold

https://github.com/GoogleContainerTools/skaffold

直接live demo

cloud build

免費額度 每天120分鐘 還是要先掛信用卡
會怕就先設定預算

可以local run
cloud-build-local

cicd pipeline

github 內建plugin

binary Authorization

gitlab pipeline

放影片

展示board功能

issue tracking

jenkins

講者 Che-Chia Chang

use jenkins X gke host

很多plugin 可以用

可塑性高

該有的有 該沒有的也有

設定跟維護成本會比其他工具高

jenkins X

一站式服務

講者公司用circle ci

用錢解決問題

自己決定該用到哪個工具

QA

  1. jenkins X跟 jenkins cli的差別

teamcity

jetbrains

dog0416

what is teamcity

  • 持續整合與管理的伺服器
  • java based
    跟開發工具整合(jetbrains 系列)

價位

免費額度
100 build configurations 2017.2+
full access to all product features
support via forum and issue tracker
3 build agents

前言

  • 幾乎所有功能都能透過scripts完成?
    • 降低維護成本
    • 適當的包裝script
  • 透過plugin與支援功能減少負擔
    • 除非很嚴格的要求
  • 簡單易懂的操作介面
    • 不要挑戰操作人員極限

設定盡量經過UI
plugin 多
agent安裝快
agent支援類型多
agent可設定條件

10個開發整合環境

綜合座談

當CD工具連續部署多台機器到一半時,遇到狀況需要反悔,會需要作什麼樣的處理來降低風險?

roll back

講師也rollback 之前的問題XD

就中斷以後 拿上一個版本再部署一次就好

講師:circleCI只有CI沒有CD

有沒有包含DB的migration會差很多

多段部署 已不影響舊版本運作的方式
執行DB migration (版本 1.5
完成以後才上新版本程式碼 (版本2
如果中斷還能確定可以回到確實可以運作的程式版本

上線前要做好營運計畫

講師:藍綠部署

不同的CI工具 是如何做管理與使用aritfact?

k8s 用image當aritfact 打TAG

Azuer 也支援docker
完整記錄CD的過程

gitlab可以在設定檔設定aritfact的名稱 路徑跟保存時間

aws射後不理 就都放著 反正空間很便宜

凍仁翔補充: 放外部空間 專心做儲存的service

重點在隨時可以部署任何版本的aritfact
記得設定保存時間 不要留太久的東西

若有多環境測試需求 不同的工具要如何做到此任務

幾乎都是container解決

E2E automatic test 會放在哪個階段做?

放在build之後的階段做

deploy完以後也做

單元測試在本機跑

e2e還是要等跟大家串起來才能跑

定時跑

啥時候跑單元測試

理想當然是在工程師電腦跑
但理想歸理想

送PR的時候跑

docker 是一個同時具備 artifact 與deployment特色的工具,在CICD如和活用這兩種不同特色來知原整個PIPELINE?

該用就用啊?

circle CI可以同時開多個container去做服務的測試

例如nginx+redis+mysql之類的?

docker in docker ?

CI建議我們BUILD 不要超過十分鐘,若時間過長,在不同工具裡,我們各有啥樣的手段可以加速或處理這個問題?

CACHE

在執行CD部屬 (金絲雀 藍綠)有沒有時麼地方要特別注意的?

要確定服務正常

內部服務有的要一次切 不能金絲雀

切DNS

金絲雀適合stateless

要注意warm up的部分 不然服務直接掛給你看

政治問題影響架構

當不想跟人溝通的時候就會把能控制的部分做在自己這邊

DNS or ingress

如何解決敏感資料得儲存問題?例如DATABASE的帳密,

管好權限

各家有各家的服務

config在不同的branch及CICD流程中應該要如何管理?

做得到

你會根據哪些條件來條選工具


有沒有cloud
團隊人數

一條龍服務的話看龍的喜好

工作環境(程式語言,主機環境
公司文化
說服別人的能力

怎麼用infra as code 整合 CICD本身

Select a repo