前言 Gitlab
828 B2B 企業(yè)節(jié)盛大啟幕,GitLab 賦能自動(dòng)化流程,引領(lǐng)創(chuàng)新部署新時(shí)代!在這個(gè)瞬息萬(wàn)變的數(shù)字時(shí)代,我們激動(dòng)地推出整合 GitLab、Docker 的頂尖解決方案,為您的軟件開(kāi)發(fā)項(xiàng)目注入前所未有的效率與靈活性。專為追求卓越的一體化開(kāi)發(fā)流程設(shè)計(jì),這一方案將徹底改變您從代碼提交到生產(chǎn)上線的全過(guò)程。
GitLab 是一個(gè)基于 Git 的開(kāi)源分布式版本控制系統(tǒng),也是一個(gè)用于倉(cāng)庫(kù)管理系統(tǒng)的 Web 服務(wù)。它由 Dmitriy Zaporozhets 和 Valery Sizov 于 2011 年創(chuàng)建,旨在構(gòu)建企業(yè)自托管 Git 平臺(tái),減少對(duì)外部依賴。GitLab 提供了豐富的功能,包括代碼托管、版本控制、代碼審查、項(xiàng)目管理、持續(xù)集成/持續(xù)部署(CI/CD)等
本實(shí)踐指南將引領(lǐng)您深入體驗(yàn) GitLab CI/CD 與 GitLab Runner 的完美融合,以構(gòu)建一套高效、自動(dòng)化的.NET 控制臺(tái)應(yīng)用程序部署流程。您將學(xué)習(xí)到如何通過(guò) GitLab CI/CD 功能配置 Runner 來(lái)監(jiān)聽(tīng) GitLab 的 Webhooks,從而實(shí)現(xiàn)在代碼提交后自動(dòng)觸發(fā)構(gòu)建和部署流程;如何利用 Docker 容器技術(shù)來(lái)快速打包和運(yùn)行您的.NET 控制臺(tái)應(yīng)用;以及如何通過(guò)編寫.gitlab-ci.yml 腳本來(lái)管理整個(gè)自動(dòng)化部署流程。
環(huán)境準(zhǔn)備
本實(shí)驗(yàn)環(huán)境是 Flexus X 實(shí)例自定義模式,使用了 4vCPUs | 12GiB,鏡像是最高版本的 ubuntu,我已經(jīng)提前在服務(wù)器中安裝了 docker 環(huán)境,在之前的實(shí)驗(yàn)中使用 xshell 連接了服務(wù)器,隨后在服務(wù)器中安裝了 dokcer。可自行操作或參考下面實(shí)驗(yàn)(完成購(gòu)買服務(wù)器以及安裝 docker 步驟)!
GitLab 部署
拉取 GitLab 鏡像
GitLab 提供了免費(fèi)的社區(qū)版(CE),適合中小型公司和個(gè)人開(kāi)發(fā)者使用。同時(shí),它也提供了收費(fèi)的企業(yè)版(EE),為企業(yè)用戶提供更多的高級(jí)功能和支持。下面實(shí)驗(yàn)中我們使用社區(qū)版。
首先,從 Docker Hub 上拉取 GitLab 的鏡像。使用以下命令拉取最新版本的 GitLab CE(社區(qū)版)鏡像:
docker pull gitlab/gitlab-ce
如果你需要特定版本的 GitLab,可以將 latest 替換為具體的版本號(hào),例如 gitlab/gitlab-ce:14.10.0。
創(chuàng)建映射目錄
GitLab 在容器內(nèi)部會(huì)生成配置文件、日志文件和數(shù)據(jù)文件。為了方便管理和持久化這些文件,你需要在宿主機(jī)上創(chuàng)建相應(yīng)的目錄,并將它們映射到容器內(nèi)部。通常,你會(huì)創(chuàng)建以下三個(gè)目錄:
·/srv/gitlab/config:用于存放 GitLab 的配置文件。
·/srv/gitlab/logs:用于存放 GitLab 的日志文件。
·/srv/gitlab/data:用于存放 GitLab 的數(shù)據(jù)文件。
可以使用以下命令創(chuàng)建這些目錄:
mkdir -p /srv/gitlab/config
mkdir -p /srv/gitlab/logs
mkdir -p /srv/gitlab/data
運(yùn)行 GitLab 容器
接下來(lái),使用 docker run 命令運(yùn)行 GitLab 容器。你需要指定容器的一些運(yùn)行參數(shù),如主機(jī)名、端口映射、容器名稱、重啟策略以及數(shù)據(jù)卷映射等。以下是一個(gè)基本的運(yùn)行命令示例:
docker run --detach --publish 443:443 --publish 80:80 --publish 2222:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume
/srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
--detach:在后臺(tái)運(yùn)行容器。
--publish:將容器內(nèi)部的端口映射到宿主機(jī)的端口上,便于外部訪問(wèn)。
--name:為容器指定一個(gè)名稱。
--restart always:設(shè)置容器總是自動(dòng)重啟。
--volume:將容器內(nèi)的數(shù)據(jù)卷映射到宿主機(jī)的指定目錄上。
修改 gitlab.rb 配置
(因?yàn)槲募?nèi)容比較多,不熟悉的話建議將服務(wù)器上的配置拉下來(lái)全局搜索修改)
執(zhí)行命令 vim srv/gitlab/config/gitlab.rb 找到下面這個(gè)配置
# external_url 'GENERATED_EXTERNAL_URL'(大約在 32 行位置)
去掉注釋,并修改為我們服務(wù)器的地址!!!
配置 ssh 使用的訪問(wèn)地址和端口
# gitlab_rails['gitlab_ssh_host'] = 'ssh.host_example.com'(大約在 66 行位置)
修改 gitlab_rails['gitlab_shell_ssh_port'] 為 = 2222,因?yàn)樯厦?docker run 的時(shí)候,我們避免端口沖突,設(shè)置端口映射配置為--publish 2222:22(大約在 698 行位置)
主要修改的地方就上面三處,我們還可以修改如下配置設(shè)置 SMTP 服務(wù)器,配置 SMTP 的作用有:
如當(dāng)新用戶注冊(cè) GitLab 賬戶時(shí),系統(tǒng)可以通過(guò) SMTP 發(fā)送一封確認(rèn)郵件給用戶,以確保用戶郵箱的有效性,并允許用戶完成注冊(cè)過(guò)程。
或是當(dāng)項(xiàng)目中有新的合并請(qǐng)求(Merge Request)時(shí),GitLab 可以自動(dòng)通過(guò) SMTP 向相關(guān)用戶發(fā)送通知郵件,提醒他們審查或處理合并請(qǐng)求等等等~~~
可根據(jù)需求自行選擇是否配置
修改代碼并提交
上面的部署流程已經(jīng)走通,接下來(lái)我們?cè)诒镜匦薷囊幌麓a,并通過(guò) git 提交上去。
代碼提交后,gitlab 會(huì)自動(dòng)觸發(fā)構(gòu)建流水線!
在作業(yè)的控制臺(tái)中看到成功輸出我們剛剛打印的內(nèi)容!
以上只是一個(gè)監(jiān)聽(tīng) gitlab 代碼提交自動(dòng)觸發(fā)構(gòu)建和部署的簡(jiǎn)單案例,在 GitLab CI/CD 的實(shí)際開(kāi)發(fā)場(chǎng)景中,使用.gitlab-ci.yml 文件來(lái)定義構(gòu)建、測(cè)試、部署等流程遠(yuǎn)比上述簡(jiǎn)單的示例復(fù)雜和多樣化。根據(jù)你的具體需求和項(xiàng)目規(guī)模,你可以通過(guò)調(diào)整 CI/CD 流程以適應(yīng)你的工作流程和環(huán)境。
-
云計(jì)算
+關(guān)注
關(guān)注
39文章
7969瀏覽量
139338 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9681瀏覽量
87266 -
流水線
+關(guān)注
關(guān)注
0文章
124瀏覽量
26488
發(fā)布評(píng)論請(qǐng)先 登錄
什么是機(jī)電一體化
華為云ServiceStage完美支持多個(gè)主流源碼托管倉(cāng)庫(kù)
如何利用樂(lè)高積木制作成自動(dòng)化流水線
FPGA之為什么要進(jìn)行流水線的設(shè)計(jì)
各種流水線特點(diǎn)及常見(jiàn)流水線設(shè)計(jì)方式

滾筒輸流水線故障排除方法
嵌入式_流水線

基于非常簡(jiǎn)單的Python代碼就能完成流水線開(kāi)發(fā)
華為云 Flexus X 實(shí)例:極速搭建個(gè)人代碼倉(cāng)庫(kù) GitLab 平臺(tái)

華為云 Flexus X 實(shí)例 docker 部署最新 gitlab 社區(qū)版,搭建自己的私人代碼倉(cāng)庫(kù)

云服務(wù)器 Flexus X 實(shí)例:部署 Gitea,擁有自己的 Git 倉(cāng)庫(kù),管理本地代碼

云端代碼管理新體驗(yàn),華為云 Flexus X 實(shí)例上 GitLab 部署與使用的實(shí)戰(zhàn)指南云端代碼管理新體驗(yàn)

評(píng)論