流水線外掛 是基於 Rainbond 外掛體系 擴充套件實現,通過外掛化的方式,可以實現對 Rainbond 構建體系的擴充套件。該外掛由社群合作伙伴 拓維資訊 參與開發並貢獻,底層是基於 GitLab CI/CD 實現。
流水線構建與 Rainbond 原始碼構建的區別是:
本文將介紹使用流水線外掛部署 RuoYi SpringBoot 專案,並實現提交程式碼後自動構建、自動部署。
流水線外掛是基於 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
。
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元件內,修改以下環境變數:
http://192.168.3.33:7070
。修改完成後,更新或重啟 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
修改完成後,就可以在每個團隊檢視中看到 流水線
按鈕選項了。
將 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
通過 Rainbond 開源應用商店部署 MySQL 即可。部署之後開啟 MySQL 對外伺服器埠,通過本地工具連線到資料庫並建立 ry
資料庫和初始化 sql 目錄下的 quartz.sql
和 ry_20230223.sql
。
進入到 團隊檢視 -> 流水線。
進入流水線管理,選擇 Java Maven 單模組的模版建立。
如果沒有 SonarQube 程式碼掃描步驟可以刪除,修改 編譯構建物 步驟:
修改 構建映象 步驟:
指令碼命令:
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 相關的環境變數用於打包映象和推播映象:
建立應用服務後,可在 GitLab 倉庫內看到多了兩個檔案 Dockerfile
和 .gitlab-ci.yml
,這是由流水線外掛服務自動生成並提交到倉庫內。
進入 程式碼管理,應用服務選擇 ruoyi
,點選 構建
按鈕開始構建。可以在持續整合頁面看到構建狀態以及步驟,點選步驟可跳轉至 GitLab 詳情頁。
等待構建完成後,即可在映象倉庫中看到構建的映象版本,接下來就可以通過該版本進行部署,可選擇部署到當前團隊下的哪個應用內。
部署完成後,可在部署歷史頁面看到部署歷史,點選部署詳情跳轉到 Rainbond 元件內。
接下來進入到應用內,切換到編排模式將 ruoyi
服務依賴至 MySQL 服務,並更新 ruoyi 元件。
進入到 ruoyi 元件內 -> 埠,新增 80 埠並開啟對外服務,即可通過預設的域名存取到 ruoyi UI。
編輯已經建立的應用服務,開啟自動構建和自動部署按鈕,下次提交程式碼時將會自動觸發整個流程。
通過流水線外掛可以更靈活的擴充套件構建過程,比如增加程式碼掃描、構建成功後的訊息通知等等。流水線外掛也會持續迭代,歡迎大家安裝使用!