流水線外掛 是基於 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。
配置自動構建和自動部署
編輯已經建立的應用服務,開啟自動構建和自動部署按鈕,下次提交程式碼時將會自動觸發整個流程。
最後
透過流水線外掛可以更靈活的擴充套件構建過程,比如增加程式碼掃描、構建成功後的訊息通知等等。流水線外掛也會持續迭代,歡迎大家安裝使用!