1. 程式人生 > >DevOps落地實踐 BAT系列 CICD iPipe vs CCI

DevOps落地實踐 BAT系列 CICD iPipe vs CCI

這裡寫圖片描述
百度效率雲,將自身定位為研發工具的SaaS解決方面,三大看點程式碼託管/CICD/敏捷看板非常清晰,對應icode/ipipe/icafe三大自研工具。而騰訊的DevOps解決方案聚焦於程式碼託管/CICD/測試管理/運維監控/專案管理五大領域,具體則依託於騰雲TGit/CCI/COC/TAPD四大開發者工具。因為功能和做法較為相近,這篇文章中我們將會通過其官方的介紹來看一下CICD的具體做法和各自的亮點。

CCI持續整合

為開發者提供支援多種程式語言的編譯構建服務,包含定時/手動啟動構建、檢視構建結果及日誌、支援快速分發交付、可擴充套件的自動化測試等功能,為專案的持續整合體系提供上游基礎服務,提升專案研發效率。
這裡寫圖片描述

Why CCI

優勢 詳細說明
接入門檻低 通過認證的騰訊雲帳號,CCI 可直接同步 TGit 的程式碼庫進行構建任務的建立;並提供了多臺標準編譯機,基礎構建任務無需進行編譯機購買及環境搭建工作。
配置靈活 CCI 提供豐富的自定義編譯引數,滿足各種複雜編譯任務需求;支援接入私有編譯機,滿足使用者特殊編譯環境的任務需求;支援接入第三方程式碼源,可從 Github 或其他 SVN 程式碼源拉取程式碼完成構建。
流水線對接 在同步 TGit 程式碼的同時,CCI也能獲取到 TGit 的提交日誌,關聯變更與構建結果;可自動或手工將構建結果同步至織雲檔案管理模組,對構建結果進行版本管理,進而完成批量機器自動化部署工作。
可擴充套件性強 可配置定時觸發構建或程式碼提交觸發構建,快速迭代更新;構建下游提供開放介面,可接入各類自動化檢測工具(如程式碼靜態掃描、安裝包檢測),快速診斷程式碼問題,提升測試質量。

產品功能

功能 詳細說明
構建任務管理 靈活的構建任務配置,可針對不同專案配置一到多個構建任務,獨立產出構建結果。
編譯引數場景 系統支援預設構建引數,允許自定義配置構建引數及構建指令碼,滿足個性化構建需求。
編譯機管理 提供了多臺標準編譯機,支援接入私有編譯機,支援使用者特殊編譯環境的任務。
自動觸發機制 使用者可手動觸發構建以外,可定時或程式碼提交時觸發構建,滿足每日基線及實時基線結果訴求。
關聯提交行為 CI可拉取tGit或其他程式碼源的提交日誌,為每次構建結果關聯上程式碼提交日誌,方便跟蹤程式碼提交產出。
無需人工介入 通過後臺的構建叢集,CI可保證編譯的安全及穩定;構建完成後通過各類通知方式進行結果同步,無需值守或干預。
程式碼託管 通過認證的騰訊雲帳號,CCI 可直接拉取同一個開發者(或企業)的 TGit 專案,降低專案接入開銷。
釋出部署 CCI 結果可一鍵或自動將構建結果同步至織雲檔案管理模組,對構建結果進行版本管理,協助完成批量機器自動化部署工作。

iPipe:持續交付工具

Why iPipe

優勢 詳細說明
高效 分散式構建,併發不排隊;序列、並行、定時多種模式支援;自動日誌分析,快速定位異常
強大 整合多種應用測試服務,開箱即用;一鍵部署主流雲商;灰度釋出、A/B驗證多種部署支援;監控、反饋,實時瞭解系統執行情況

產品功能

  • Check-in編譯
  • 持續整合
  • 產品倉庫
  • 一鍵部署到雲端
  • 移動應用測試

使用方式

以下一iPipe為例,簡單瞭解一下平臺如何使用。

iPipe + Jenkins

與Jenkins的整合方式,提供iPipe的Jenkins外掛:iPipe-Agent
在iPipe上建立job
這裡寫圖片描述

自動化構建

這裡寫圖片描述

程式碼評審

這裡寫圖片描述

整體設定的yaml檔案

Image:
    type : default
BeforeBuild:
    script : ./before_build.sh
Build:
    script : ./build.sh
AfterBuild:
    script : ./after_build.sh
Package:
    script : ./check_artifact.sh
    artifacts:
        name : waimai_fe
        version : $COMMIT_ID-$BUILD_ID
        files : [./ci.yml, ./build.sh]

格式說明
Image:
    type : 指定編譯環境標籤, 必填欄位。預設標籤是default, 任何企業均可指定使用。企業還可以擁有專有的編譯環境標籤,專有標籤為企業專屬所有。

BeforeBuild: // 編譯前
    script : 指定編譯前要執行指令碼, 可選欄位。該指令碼的路徑以程式碼根目錄為起始的相對路徑

Build: // 編譯中
    script : 指定編譯階段要執行指令碼, 可選欄位。該指令碼的路徑以程式碼根目錄為起始的相對路徑

AfterBuild: // 編譯後
    script : 指定編譯完成後要執行指令碼, 可選欄位。該指令碼的路徑以程式碼根目錄為起始的相對路徑

Package:
    script : 指定將編譯結果打包時要執行指令碼, 可選欄位。該指令碼的路徑以程式碼根目錄為起始的相對路徑. 具體的打包動作由編譯系統自動完成,該指令碼不負責具體的打包工作。
    artifacts:
        name : 指定編譯結果壓縮包的名稱
        version : 指定編譯結果壓縮包的版本,支援$COMMIT_ID, $BUILD_ID兩者的任意組合, 並用'-'連線. COMMMIT_ID 表示git 倉庫commit id, $BUILD_ID 表示構建ID.
                  支援格式: $BUILD_ID, $COMMIT_ID, $BUILD_ID-$COMMIT_ID, $COMMIT_ID-$BUILD_ID
        files : 指定具體的產出檔案路徑,多個檔案逗號分割。每個路徑均以程式碼根路徑起始的相對路徑

情況說明:
       name 和version 全部為空時,表示只編譯,不打包。
       name 和version 只要有一個不為空,則進行打包操作。
       version 欄位只支援$BUILD_ID, $COMMIT_ID兩個內建變數,必須以$開頭, 兩個都存在時必須以'-'連線,不支援其他符號進行連線
       files 中多個檔案路徑必須以逗號分割, 不分割預設是一個檔案路徑
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

持續交付

這裡寫圖片描述

總結

無論是百度還是騰訊,都很好的利用了自身的體量和平臺的優勢,使得雲平臺的使用者使用起來更加順暢,更能夠集中精力與業務開發。除了一鍵部署,而iPipe也明確的提出了持續部署中的灰度釋出和A/B驗證部署方式的支援。但是CI/CD可能遇到的情況非常複雜,比如雲和非雲,公有云和私有云的混合構成,然後多種程式語言,多種作業系統,不同的中介軟體,是否依然能夠支援,或者能夠支援到什麼程度,沒有得到詳細的驗證,如果自動編譯以Maven為中心的構成,則很有可能集中於java系的應用程式開發,具體在使用的時候這些都需要進一步的進行考察。

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed