DevOps 基於Walle的小型持續集成實戰(二)設計

該文章用於創建一個小型的基於Walle的持續集成工具。解決java,react,angular項目的編譯發佈。以便對整個持續集成印象加深。
官方網站: https://walle-web.io/

適用場景

  • 小型服務集羣(選用Docker-Compose ; 不使用Ansible)
  • 簡易構建腳本(選用Walle)
大規模集羣複雜的構建腳本,請學習Jenkins+Ansible+K8S等生態

基本思路

  • 使用Walle替代Jenkins做爲構建方案,簡化部分操做。但總體的自定義程度會缺失(例如拉去多git路徑進行統一編譯,不支持額外構建參數的傳入)
  • 使用Docker-Compose做爲單機容器編排分方案
  • 環境使用Gitlab做爲代碼管理,Nexus做爲包私有倉庫

操做流程

  • 研發環境搭建前端

    • Gitlab 搭建和基本操做
    • Nexus 搭建(可選)
    • Maven 發佈
    • Npm 發佈
    • Docker 發佈
  • 持續集成java

    • Docker 安裝和基本操做
    • Walle 安裝和基本操做
    • Java 前端項目構建腳本
    • React/Angular 後端項目構建

數據流程

總體流程會串聯整個環境上各技術點,最終造成完整的持續集成方案。

clipboard.png

  • 發起構建。配置完各環境發佈腳本後,則能夠使用構建發起進行觸發
  • 環境準備。初始化環境參數,例如antd-pro的npm install -g umi或者npm install -g @tarojs/cli@1.2.11
  • Nxues拉取環境相關包。包私有倉庫會加速npm install以及mvn compile的下載速度,以及支持私有包的下載
  • 代碼檢出。根據branch的commit進行代碼檢出操做
  • 代碼編譯。使用mvn clean compile package -Dmaven.test.skip=true or npm run build等編譯腳本,或者進行預處理(例如解壓node_modules)
  • 遠程登陸。經過shh鏈接遠程服務器
  • 本地版本。壓縮內容,併發送到遠程服務器上打包。並會在遠程環境上存放屢次發佈的版本,用於回退和切換
  • 服務停用。進行kill等操做,中止本來運行的服務
  • 切換啓用。經過軟鏈接替換新的本地版本映射到運行路徑,再進行服務啓動
  • 構建完成。能夠進行釘釘或者郵件發送。
以上步驟中,在使用Walle的方案下,會集成[代碼檢出],[遠程登陸],[本地版本],[切換啓用-切換部分],[構建完成]等步驟,且會自動化刪除過程文件

成果展現

項目列表

clipboard.png

項目詳情

clipboard.png

部署管理

clipboard.png

部署日誌

clipboard.png


後記

⚠️ 以上雖然看起來很複雜,實際狀況下會更爲複雜。容咱們一步一步的解決各問題。
相關文章
相關標籤/搜索