十分鐘 CODING DevOps 全鏈路體驗
- 2019 年 10 月 4 日
- 筆記

近期 CODING 團隊在 2019 KubeCon 大會上發布 DevOps 一站式解決方案:CODING 2.0。此次 CODING 全新上線了持續集成與製品庫模組,通過自動化與標準化的方式來幫助開發者擺脫編譯、構建、集成、製品管理等重複勞動,旨在打造沉浸式開發體驗。在 KubeCon 大會現場,我們以一個基於 Spring 的模版項目為例,展示了開發者如何基於 CODING 輕鬆完成編碼到構建製品的過程。
新項目創建
首先新建一個項目,選擇一個您熟悉的開發語言預置模版。預置程式碼模版提供了從程式碼生成、持續集成、製品庫的自動配置,並已預置了 Dockerfile ,實現 Docker 容器化的打包方式。目前程式碼模版已內置了包括 Java、Ruby、Android、Node.js、Python 等主流語言開發框架的網頁或移動端應用。

只需幾分鐘,項目即可創建完畢。CODING 為您創建了一個程式碼倉庫,並將一個簡單 Java 網頁應用的程式碼推送到倉庫 master 分支,還為您創建一條可直接運行的構建流水線,產物為 Docker 鏡像。基於創建好的程式碼倉庫和構建流水線您可以立即進行程式碼開發,並且快速集成程式碼。

接下來我們基於創建好的模版項目 spring-demo ,通過三個環節:程式碼託管、持續集成、製品管理,來看看 CODING 的 DevOps 配置具體是什麼樣的。
程式碼託管
CODING 提供程式碼託管能力,並支援 Git 與 SVN 的程式碼提交方式。在自動生成的程式碼倉庫中我們看到了 Maven 編譯腳本、Jenkins 構建腳本、Docker 鏡像打包腳本、網頁應用的源碼。在 README 文件中詳細介紹了各個源碼文件的作用以及如何運行該網頁應用,對於開發新手來說可以說是手把手程度的詳細介紹。您可以通過本地 Git/SVN 客戶端來提交程式碼。

持續集成
修改後的程式碼如何集成到軟體當中來?我們來看看預置模版下生成好的構建任務,並學習如何修改持續集成配置以滿足更多的場景需求。
- 在下圖中可以看到系統已自動運行過第一次的構建,在持續集成首頁您可以清晰地看到每次構建結果的狀態、觸發原因、持續時長等基本資訊。CODING 的持續集成支援多 Job 並發運行,如果您的研發團隊有這方面的需求,在持續集成頁面按需創建多個構建任務即可。

- 在構建記錄中您可以看到每次構建結果的詳細資訊。比如構建過程的運行狀態,如果遇到構建失敗的情況,您就可以在該頁面查看失敗環節的日誌資訊以便快速修復構建流水線。您還可以看到改動記錄、測試報告、還有生成的構建產物(比如 Jar/War/腳本/配置文件等構建半成品)。最終的構建產物(比如 Docker 鏡像)通過簡單配置即可自動推入製品庫中,稍後我們會詳細介紹製品庫。

- 接下來我們來看看構建任務的具體配置是怎樣的。在觸發方式中您可以按需設置觸發方式、郵件通知人員。在持續集成過程中您可以選擇通過圖形化編輯器或者文本編輯器(如果您對 Jenkinsfile 腳本熟悉)的方式來詳細配置構建的每個環節。針對一些持續集成過程中無法明文展示或者易變的資訊,您可以通過環境變數或者憑據注入的方式來進行設置。如果想要加快構建速度,您可以打開快取配置,同時還支援清空重置。

製品管理
在持續集成完成生成構建產物後,我們來看看如何使用 CODING 的製品庫來管理這些製品。
- CODING 製品庫的層級關係為:倉庫 > 包 > 版本,每個層級描述如下: 倉庫:用於管理不同類型的倉庫和倉庫下的包資源,可以設置倉庫對外的訪問許可權。 包:構建產物對外提供訪問的基礎單元,用於介紹當前構建產物的用途和使用指引。 版本:列出某個包下的所有構建產物,詳細記錄了每次構建產物的版本迭代更新變化。

- 倉庫當中會明確提示推送以及拉取指引,不同的製品類型對應著不同的存儲、拉取、共享方式。除了通過 CODING 的持續集成將製品自動推送到製品庫,也可以在本地環境當中推送或上傳您的製品。

- 您可以設置倉庫的基本資訊(倉庫類型、名稱、描述、許可權範圍),也可以設置包的基本資訊(包名稱、許可證、成熟度、問題跟蹤等)。在描述軟體包的頁面,您可以詳細的了解版本資訊(版本號、哈希值、上傳者等),以便您的研發團隊能清晰地追溯每個製品的情況。

目前 CODING 製品庫已支援 Docker、NPM、PyPI、Generic File、Helm 等多種類型的製品管理,後續會支援更多製品類型,敬請期待。