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 後端項目構建
數據流程
總體流程會串聯整個環境上各技術點,最終造成完整的持續集成方案。
- 發起構建。配置完各環境發佈腳本後,則能夠使用構建發起進行觸發
- 環境準備。初始化環境參數,例如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的方案下,會集成[代碼檢出],[遠程登陸],[本地版本],[切換啓用-切換部分],[構建完成]等步驟,且會自動化刪除過程文件
成果展現
項目列表
項目詳情
部署管理
部署日誌
後記
⚠️ 以上雖然看起來很複雜,實際狀況下會更爲複雜。容咱們一步一步的解決各問題。
歡迎關注本站公眾號,獲取更多信息