GitLab和Rainbond整合實現一體化開發環境

GitLab擅長源代碼管理,Rainbond擅長應用自動化管理,整合Gitlab和Rainbond就能各取所長,本文詳細講述如何整合Gitlab和Rainbond,並通過整合實現一體化開發環境。

一.通過Rainbond一鍵安裝 Gitlab

Rainbond作爲應用運行環境,Gitlab可以運行在Rainbond之上,爲了便於Gitlab安裝,我們製作了Gitlab安裝包放到了Rainbond的應用市場,實現Gitlab的一鍵安裝。

  1. 安裝Rainbond,安裝步驟

  2. 從應用市場搜索“Gitlab”,點擊安裝,一鍵完成Gitlab所有安裝和配置工作,包括數據安裝和初始化。 -w1575

  3. 安裝完成,通過Rainbond管理和運維Gitlab。 -w247

二.Rainbond源碼構建對接Gitlab Oauth,實現一鍵代碼部署

使用過Rainbond的小夥伴一定知道,在Rainbond上創建組件有三種方式:源代碼創建、鏡像創建、應用市場創建。

源碼構建方式通過配置源碼地址實現代碼構建,Gitlab雖然可以提供源碼地址,但構建新應用需要拷貝源碼地址及設置用戶名密碼,這個過程很麻煩,也容易犯錯。

爲了與 GitLab 配合有更好的體驗,Rainbond做了產品化的支持,通過OAuth2.0協議與GitLab進行對接。

1.配置GitLab Applications

進入 User Settings → Applications

選項名 填寫內容 說明
Name Rainbond 填寫自定義的 Application 名稱
Redirect URI https://IP:7070/console/oauth/redirect 回跳路徑,用於接收第三方平臺返回的憑證
Scopes api、read_user、read_repository GitLab的權限設置,需要開啓 api、read_user、read_repository

創建後請保存 Application ID 和 Secret,後面會用到。

使用私有化部署 Rainbond 時,需配置 GItLab 允許向本地網絡發送 Webhook 請求

進入 Admin area → settings → NetWork → Outbound requests

勾選 Allow requests to the local network from hooks and services 選項即可

2.配置Rainbond OAuth

進入 Rainbond 首頁企業視圖 → 設置 → Oauth 第三方服務集成 → 開啓並查看配置 → 添加

選項名 填寫內容 說明
OAuth類型 gitlab 認證的 Oauth 類型
OAuth名稱 自定義(GitLab-Demo) 填寫自定義的 Oauth 服務名稱
服務地址 http://xx.gitlab.com GitLab 服務訪問地址
客戶端ID 上一步獲取的Application ID GitLab 生成的 Application ID
客戶端密鑰 上一步獲取的Application Secret GitLab 生成的 Application Secret
平臺訪問域名 使用默認填寫內容 用於OAuth認證完回跳時的訪問地址

3.Rainbond OAuth認證

進入 Rainbond 首頁企業視圖 → 個人中心 → OAuth 賬戶綁定 → 對應賬號 → 去認證

4.對接後效果

接下來展示Rainbond與Gitlab對接後平臺的效果圖。

當我們對接成功後,進入基於源碼構建的頁面會展示下圖中的效果,展示所有的倉庫列表。

image-20211026142406668

通過Rainbond OAuth2與GitLab進行對接後,在Rainbond平臺登錄不同的賬號時,需進入個人中心認證,認證後Rainbond會根據賬號不同的權限展示不同的代碼倉庫。

三.Rainbond對接Gitlab WebHook,自動觸發構建

當我們完成整合Rainbond 和 Gitlab Oauth ,選擇指定倉庫,點擊創建組件,可選擇代碼版本(自動獲取代碼分支以及tag)和 開啓自動構建。

image-20211026171232215

創建完成後在組件中配置WebHook自動構建,提交代碼,Commit信息包含“@deploy”關鍵字,就可以觸發WebHook自動構建。

Commit信息關鍵字觸發GitLab WebHook原生是不支持的,在這之前有社區用戶提出在提交代碼觸發構建時,每一次提交都會觸發構建,用戶並不想這樣做,所以Rainbond研發團隊研發了根據提交的Commit信息包含關鍵字去觸發自動構建。

下圖中展示了用戶從創建組件到持續開發的整個流程。

<img src="https://i.loli.net/2021/10/27/ZR95TefQzABVU72.png" alt="image-20211027111511630" style="zoom:50%;" />

四.總結

一體化開發環境的能力:

  • 代碼管理:代碼相關的所有管理功能,提供web界面的管理(Gitlab)
  • wiki :在線編輯文檔,提供版本管理功能(Gitlab)
  • 問題管理:Issue管理(Gitlab)
  • 持續集成:代碼自動編譯和構建(Rainbond)
  • 環境管理:快速搭建開發或測試環境,保證開發、測試、生產環境一致性(Rainbond)
  • 架構編排:無侵入的Service Mesh架構編排(Rainbond)
  • 模塊複用:通過組件庫 實現公司內部模塊、應用、服務積累和複用,同時實現了軟件資產管理(Rainbond)
  • 持續交付:開發、測試、生產環境持續交付流程(Rainbond)
  • 應用管理:應用監控和運維面板(Rainbond)
  • 團隊管理: 多團隊管理,成員、角色管理(Rainbond)

一體化開發環境的價值:

  1. 開箱即用
  2. 讓開發團隊專注在寫業務代碼,不要在環境上浪費時間
  3. 應用粒度抽象,使用簡單,上手快
  4. 過程自動化,提高操作效率(持續集成、環境管理、持續交付等)

五.感謝以下開源項目

Rainbond:開源雲原生應用管理平臺 https://www.rainbond.com/ Gitlab:知名代碼倉庫 https://about.git‍lab.cn/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章