網站首頁 編程語言 正文
Gitlab簡介
GitLab是利用 Ruby on Rails 一個開源的版本管理系統,實現一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。同時Gitlab集成了一系列的CI功能。不得不說,Gitlab在企業中是的使用率非常高。
Rainbond非常推薦用戶使用Git代碼倉庫管理代碼,從而獲取更好的源代碼管理和自動化CI體驗。話不多說,接下來我們用10分鐘的時間完成Gitlab服務在Rainbond的完整部署。
準備工作
- 準備一個可用的域名(如果你可以準備),比如?git.example.com
- 準備域名對應的證書(如果你可以準備)
- Rainbond平臺已安裝完成,參考文檔Rainbond快速安裝
- Rainbond平臺處在能夠連接互聯網的環境下。
部署步驟
本教程我們將采用基于已制作完成的Docker鏡像安裝的方式部署Gitlab。部署完成后在Rainbond的運行效果如下:
我們在Rainbond部署一個開源的項目,基于Docker鏡像的方式是最快,最簡單的方式,特別是一些根據云原生的建議制作的鏡像在Rainbond運行兼容性和體驗都非常優越。
我們今天部署的Gitlab服務包括Postgresql組件、Redis組件和Gitlab-Server組件,它們的網絡依賴關系如上圖你看到一樣,我們根據依賴關系從小到上依次部署。
首先創建應用 GItlab然后從應用管理頁面開始添加服務組件:
我們采用基于DockerRun命令的方式創建服務,參考文檔 基于鏡像創建服務 ,
此次部署的Gitlab鏡像由社區提供,是目前使用最廣的鏡像。
部署Postgresql組件
添加服務組件,基于以下DockerRun命令,Rainbond將從下面的命令中獲取鏡像名稱和持久化存儲目錄。
docker run --name gitlab-postgresql -d \
--volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
sameersbn/postgresql:10
服務構建源識別完成后,通常的過程是直接創建并啟動,但是我們這里還需要設置服務的運行類型為有狀態服務,并且還需要設置一下連接信息。因此我們需要選擇創建不啟動。方式如下:
強調一下,取消圖中紅色框框中的單選框,這一步非常重要
確認后頁面直接跳轉到服務管理頁面,我們做以下幾步設置:
1.更改端口別名,設置連接信息
進入服務端口管理頁面,服務已默認添加了5432端口,更改端口協議為TCP, 打開端口的對內服務按鈕,同時單擊"使用別名"后方的端口別名信息,在彈出窗中設置端口別名為 “DB”。確認后將自動生成DB_HOST和DB_POST兩個連接信息,在服務"依賴"頁面可以查詢連接信息, 同時我們繼續添加以下連接信息:
變量名 | 值 | 說明 |
---|---|---|
DB_EXTENSION | pg_trgm | ? |
DB_NAME | gitlabhq_production | 數據庫名稱 |
DB_PASS | password | 密碼,你自己可以隨便定義值 |
DB_USER | gitlab | 連接數據庫用戶名 |
添加這些連接信息有兩個作用:
Postgresql將讀取這些變量自動創建用戶和數據庫
Postgresql服務被Gitlab-Server依賴后將注入到Gitlab-Server環境中,Gitlab-Server將根據這些變量信息連接數據庫。
更多信息參考文檔服務端口管理 服務連接信息管理
2.更改服務部署類型
由于Postgresql屬于數據庫類,我們需要將服務部署類型設置為有狀態服務,進入服務"其他設置"頁面,在"基礎信息"信息中將服務的部署類型切換為有狀態服務。
3.創建服務
設置完成,點擊構建開始構建并啟動服務,這時候我們可以開始下一個組件的部署了。
部署Redis組件
部署Redis組件的過程與Postgresql一致,唯一的不同是不需要添加過多的連接信息。
1.基于下述DockerRun命令添加服務
docker run --name gitlab-redis -d \
--volume /srv/docker/gitlab/redis:/var/lib/redis \
sameersbn/redis:4.0.9-1
2.完成檢查后設置創建不啟動,進入服務管理頁面
3.設置6379端口別名為REDIS,并開啟端口對內服務。完成后在服務依賴頁面可以查看到REDIS_HOST和REDIS_PORT兩個連接信息變量,此變量將被注入到Gitlab服務中。
4.更改服務的部署類型為有狀態服務。
5.創建服務,現在可以進入下一個環節了。
部署Gitlab-Server組件
1.使用下述的DockerRun命令創建組件,選擇創建不啟動。
docker run --name gitlab -d \
--publish 10022:22 --publish 10080:80 \
-e GITLAB_PORT=80 \
-e GITLAB_HOST=git.example.com \
-e GITLAB_SSH_PORT=10022 \
-e GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string \
-e GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string \
-e GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:11.8.2
這里需要說明的是其中的幾個變量信息:
變量 | 值 | 說明 |
---|---|---|
GITLAB_PORT | 80 | ? |
GITLAB_HOST | git.example.com | 之前準備的域名,如果沒有準備后續設置Rainbond默認分配的域名即可(創建后可更改) |
GITLAB_SSH_PORT | 20222 | Gitlab server 22端口開啟外網訪問后分配的端口(創建后可更改) |
GITLAB_SSH_HOST | 10.10.10.10 | Gitlab server 22端口開啟外網訪問后的IP(創建后可更改) |
2.創建服務后依賴上面建立的兩個服務。直接進入拓撲圖編輯模式,將Gitlab Server與redis和postgresql服務連線即可。參考文檔 建立服務依賴
3.構建服務,等待服務啟動完成。
注意,Gitlab服務第一次啟動過程比較緩慢,等待服務啟動完成。
配置網關訪問策略
gitlab服務提供80端口的HTTP訪問和22端口的SSH代碼訪問,分別為其添加訪問策略。
80端口,配置HTTP訪問策略,使用預先準備的域名比如(git.example.com),這與GITLAB_HOST配置的必須一致。綁定域名對應的證書。
添加完成后進入訪問策略列表,選擇剛剛添加的策略,進入參數配置,將"上傳限制"調整為10000 Mb,基本就是不限制了。
參考文檔 添加HTTP訪問策略
為22端口添加TCP策略,生成的IP和端口需要與GITLAB_SSH_HOST GITLAB_SSH_PORT 兩個變量一致。
到此,Gitlab服務部署完成,你可以直接訪問服務了。第一次進入時將設置root賬號的密碼。
FAQ
- 安裝完成,訪問返回Gitlab的502頁面
這個時候Gitlab正在進行初始化和啟動過程,內部的某些進程還未啟動完成。這個時候只需要等待服務啟動完成即可,第一次啟動大概5-10分鐘。
- 上述過程還是有點復雜,能不能直接一鍵部署。
那當然是可以的,我已將Gitlab服務分享到Rainbond公有應用市場,供給Rainbond用戶一鍵安裝,應用市場搜索"Gitlab代碼倉庫服務" 選擇版本v11.8.2,同步后直接安裝即可。需要注意的是,安裝完成后需要根據你的網關訪問策略重新配置Gitlab的GITLAB_HOST、GITLAB_SSH_HOST等信息。
原文鏈接:https://blog.csdn.net/zqg5258423/article/details/88677636
相關推薦
- 2022-09-05 Spring是如何解決循環依賴的?
- 2023-07-15 es6中export和export default的區別
- 2022-08-25 R語言實現KMeans聚類算法實例教程_R語言
- 2023-07-27 TypeScript類和多態、抽象類、訪問修飾符
- 2022-06-30 Oracle在PL/SQL中使用存儲過程_oracle
- 2022-04-09 DM8 數據庫連接Alibaba druid 提示:dbType not support
- 2022-08-10 pandas溫差查詢案例的實現_python
- 2022-12-16 C++?Boost?Atomic詳細講解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支