GitLab擅長源代碼管理,Rainbond擅長應用自動化管理,整合Gitlab和Rainbond就能各取所長,本文詳細講述如何整合Gitlab和Rainbond,並通過整合實現一體化開發環境。
一.通過Rainbond一鍵安裝 Gitlab
Rainbond作爲應用運行環境,Gitlab可以運行在Rainbond之上,爲了便於Gitlab安裝,我們製作了Gitlab安裝包放到了Rainbond的應用市場,實現Gitlab的一鍵安裝。
-
安裝Rainbond,安裝步驟。
-
從應用市場搜索“Gitlab”,點擊安裝,一鍵完成Gitlab所有安裝和配置工作,包括數據安裝和初始化。
-
安裝完成,通過Rainbond管理和運維Gitlab。
二.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對接後平臺的效果圖。
當我們對接成功後,進入基於源碼構建的頁面會展示下圖中的效果,展示所有的倉庫列表。
通過Rainbond OAuth2與GitLab進行對接後,在Rainbond平臺登錄不同的賬號時,需進入個人中心認證,認證後Rainbond會根據賬號不同的權限展示不同的代碼倉庫。
三.Rainbond對接Gitlab WebHook,自動觸發構建
當我們完成整合Rainbond 和 Gitlab Oauth ,選擇指定倉庫,點擊創建組件,可選擇代碼版本(自動獲取代碼分支以及tag)和 開啓自動構建。
創建完成後在組件中配置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)
一體化開發環境的價值:
- 開箱即用
- 讓開發團隊專注在寫業務代碼,不要在環境上浪費時間
- 應用粒度抽象,使用簡單,上手快
- 過程自動化,提高操作效率(持續集成、環境管理、持續交付等)
五.感謝以下開源項目
Rainbond:開源雲原生應用管理平臺 https://www.rainbond.com/ Gitlab:知名代碼倉庫 https://about.gitlab.cn/