流水線插件 是基於 Rainbond 插件體系 擴展實現,通過插件化的方式,可以實現對 Rainbond 構建體系的擴展。該插件由社區合作伙伴 拓維信息 參與開發並貢獻,底層是基於 GitLab CI/CD 實現。
流水線構建與 Rainbond 源碼構建的區別是:
- Rainbond 源碼構建:使用簡單,固定的構建模式,用户只需提供源代碼,但不是很靈活。
- 流水線構建:自定義構建步驟,使用更加靈活。
本文將介紹使用流水線插件部署 RuoYi SpringBoot 項目,並實現提交代碼後自動構建、自動部署。
安裝 GitLab 和 Runner
流水線插件是基於 GitLab 實現,所以需要依賴 GitLab 和 GitLab Runner,如果已有則可跳過此步。
通過 Rainbond 開源應用商店部署 GitLab 和 Runner,進入到 平台管理 -> 應用市場 -> 開源應用商店 中分別搜索 GitLab 和 GitLab-runner,選擇版本進行安裝,分別安裝到同一個應用內。
部署完成後,訪問 GitLab 默認的域名進行用户註冊。然後關閉 GitLab 默認的 AutoDevOps:Admin -> Settings -> CI/CD -> Continuous Integration and Deployment 取消勾選 Default to Auto DevOps pipeline for all projects。
註冊 Runner
GitLab 和 Runner 都部署完成後,需要將 Runner 註冊到 GitLab 中。
進組 Runner 組件內 -> Web 終端,執行以下命令進行註冊:
<URL>為 GitLab 訪問地址<TOKEN>在 GitLab 的Admin -> Runners獲取Registration token<TAG>自定義 Runner 的標籤。
gitlab-runner register \
--non-interactive \
--executor "docker" \
--docker-image alpine:latest \
--url "<URL>" \
--registration-token "<TOKEN>" \
--description "docker-runner" \
--tag-list "<TAG>" \
--run-untagged="true" \
--locked="false" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-volumes /root/.m2/repository \
--docker-privileged="true" \
--access-level="not_protected" \
--docker-pull-policy="if-not-present"
註冊完成後,可以在Admin -> Runners 頁面中看到如下圖,Status 為 online 則正常。
安裝流水線插件
通過 Rainbond 開源應用商店部署 Pipeline 應用插件,進入到 平台管理 -> 應用市場 -> 開源應用商店 中搜索 Pipeline,選擇對應的版本進行部署。
安裝完成後,需要修改 Pipeline-Backend 服務的配置,進入到 Pipeline 應用內 -> Pipeline-Backend組件內,修改以下環境變量:
- RAINBOND_URL:Rainbond 控制枱訪問地址,例如:
http://192.168.3.33:7070。 - RAINBOND_TOKEN:Rainbond 控制枱的 Token,可以在 右上角用户 -> 個人中心 -> 訪問令牌 中獲取。
修改完成後,更新或重啓 Backend 組件生效。
進入到 Pipeline 應用內 -> k8s 資源 -> 編輯 rainbond-pipeline,修改 pipeline 資源中的 access_urls 配置,修改為 Pipeline-UI 組件的對外訪問地址,如下:
apiVersion: rainbond.io/v1alpha1
kind: RBDPlugin
metadata:
labels:
plugin.rainbond.io/name: pipeline
name: pipeline
spec:
access_urls:
- https://custom.com
alias: Pipeline
author: Talkweb
description: 該應用插件是基於 GitLab CI/CD 實現,擴展 Rainbond 已有的構建體系。
icon: https://static.goodrain.com/icon/pipeline.png
version: 1.0.0
修改完成後,就可以在每個團隊視圖中看到 流水線 按鈕選項了。
部署 RuoYi 項目
將 Gitee 中的 RuoYi 項目 Fork 到私有的 GitLab 中。
修改項目配置文件中的 mysql 連接地址:
# ruoyi-admin/src/main/resources/application-druid.yml
......
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主庫數據源
master:
url: jdbc:mysql://${MYSQL_HOST}:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
部署 MySQL
通過 Rainbond 開源應用商店部署 MySQL 即可。部署之後打開 MySQL 對外服務端口,通過本地工具連接到數據庫並創建 ry 數據庫和初始化 sql 目錄下的 quartz.sql 和 ry_20230223.sql。
部署 RuoYi SpringBoot
進入到 團隊視圖 -> 流水線。
1.創建流水線
進入流水線管理,選擇 Java Maven 單模塊的模版創建。
如果沒有 SonarQube 代碼掃描步驟可以刪除,修改 編譯構建物 步驟:
- 製品目錄:ruoyi-admin/target/*.jar
修改 構建鏡像 步驟:
-
腳本命令:
cp ruoyi-admin/target/*.jar app.jar docker login -u ${REPOSITORY_USERNAME} -p ${REPOSITORY_PASSWORD} ${REPOSITORY_URL} docker build -t ${REPOSITORY_URL}/${ORG}/${MODULE}:${DEVOPS_VERSION} . docker push ${REPOSITORY_URL}/${ORG}/${MODULE}:${DEVOPS_VERSION}
在流水線的變量內,指定 Docker 相關的環境變量用於打包鏡像和推送鏡像:
- REPOSITORY_URL:鏡像倉庫地址,如:registry.cn-hangzhou.aliyuncs.com
- ORG:鏡像倉庫組織,例如:goodrain
- REPOSITORY_USERNAME:鏡像倉庫用户名
- REPOSITORY_PASSWORD:鏡像倉庫密碼
2.創建應用服務
- 服務編碼:唯一的
- 服務名稱:自定義
- 流水線:選擇流水線模版
- 倉庫配置:填寫倉庫地址,如:http://gitlab.test.com/root/ruoyi.git
- 認證配置:可選用户密碼或Token
創建應用服務後,可在 GitLab 倉庫內看到多了兩個文件 Dockerfile 和 .gitlab-ci.yml ,這是由流水線插件服務自動生成並提交到倉庫內。
3.構建服務
進入 代碼管理,應用服務選擇 ruoyi,點擊 構建 按鈕開始構建。可以在持續集成頁面看到構建狀態以及步驟,點擊步驟可跳轉至 GitLab 詳情頁。
4. 部署後端服務
等待構建完成後,即可在鏡像倉庫中看到構建的鏡像版本,接下來就可以通過該版本進行部署,可選擇部署到當前團隊下的哪個應用內。
部署完成後,可在部署歷史頁面看到部署歷史,點擊部署詳情跳轉到 Rainbond 組件內。
編輯依賴關係
接下來進入到應用內,切換到編排模式將 ruoyi 服務依賴至 MySQL 服務,並更新 ruoyi 組件。
進入到 ruoyi 組件內 -> 端口,添加 80 端口並打開對外服務,即可通過默認的域名訪問到 ruoyi UI。
配置自動構建和自動部署
編輯已經創建的應用服務,打開自動構建和自動部署按鈕,下次提交代碼時將會自動觸發整個流程。
最後
通過流水線插件可以更靈活的擴展構建過程,比如增加代碼掃描、構建成功後的消息通知等等。流水線插件也會持續迭代,歡迎大家安裝使用!