Docker Compose部署GitLab

PetterLiu發表於2024-10-15

image

今天我將向你展示如何在一小時內安裝 GitLab 伺服器,並在其中執行第一個 CI/CD 程序。
本文是 “如何開始使用流行的 CI/CD 工具 ”系列文章的一部分。在本文中,我將向你展示如何安裝 CI/CD 工具,以及如何準備基於 Maven 構建和測試一個簡單專案的流程。

什麼是 GitLab?

Gitlab 是一款支援使用持續整合和持續交付流程進行軟體開發的工具。它的主要元件是 Git 版本控制系統。此外,它還提供許多功能,支援程式設計師在各種環境下持續構建、測試和自動安裝專案。本文GitLab 17版本


什麼是 Docker Compose?
要了解什麼是 Docker Compose,請訪問文章: 如何使用 Docker Compose 安裝 Jenkins?

所需工具
開始工作前,請準備好所需工具。你可以在網站上找到這些工具的說明: 如何使用 Docker Compose 安裝 Jenkins?

Docker Compose 的配置


我們將建立一個專門的目錄來儲存資料和 Gitlab 配置,然後開始安裝工作。

下一步,我們建立包含以下內容的 docker-compose.yml 檔案:

version: "3.7"
services:
web:
image: "gitlab/gitlab-ce:latest"
restart: always
hostname: "localhost"
container_name: gitlab-ce
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url '
http://192.168.0.107:8080'
ports:
- "8080:80"
- "8443:443"
volumes:
- "/home/docker/gitlabce/config:/etc/gitlab"
- "/home/docker/gitlabce/logs:/var/log/gitlab"
- "/home/docker/gitlabce/data:/var/opt/gitlab"
networks:
- gitlab
gitlab-runner:
image: gitlab/gitlab-runner:alpine
container_name: gitlab-runner
restart: always
depends_on:
- web
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- "/home/docker/gitlabce/gitlab-runner:/etc/gitlab-runner"
networks:
- gitlab

networks:
gitlab:
name: gitlab-network

按實際部署環境修改 external_url 'http://192.168.0.107:8080', 其中192.168.0.107在這兒是我的虛擬機器IP

該配置定義了我們要執行的容器。在我們的例子中,將是 GitLab 服務和一個 GitLab runner(執行 CI / CD 任務的獨立模組)。最重要的配置引數有

image - 我們想在伺服器中使用的 docker 映象
埠--我們在容器外提供的埠列表。在我們的配置中,我們提供了 80、443(網站)埠
container_name - 容器名稱
volumes - 指定容器使用的卷。在我們的配置中,我們有與系統共享的目錄($ GITLAB_HOME 中的子目錄)和一個允許從 GitLab 執行程式訪問 Docker 環境的額外卷。
networks - 定義容器執行的虛擬網路。在我們的例子中,www 門戶和執行程式在一個 “gitlab-network ”中執行。

安裝 Gitlab

使用以下命令啟動容器

docker-compose up –d

啟動後,Docker 會從伺服器上下載 GitLab 和 GitLab Runner 映像。在我的電腦上是這樣的

image

首次登入 GitLab 需要一個臨時密碼,該密碼在安裝過程中自動生成。我們使用以下命令獲取密碼

docker exec -it gitlab-ce grep 'Password:' /etc/gitlab/initial_root_password


GitLab 啟動

我們的 GitLab 網址是:http://192.168.0.107:8080。訪問該地址後,會出現以下介面:

image

注意:首次啟動入口網站可能需要幾分鐘時間。

要登入門戶,我們必須在使用者名稱一欄輸入 “root”,並在密碼一欄輸入之前獲得的臨時密碼。

登入後,會出現以下介面:

image

恭喜您,GitLab 已成功啟動!

門戶的初始配置


在繼續之前,我們需要更改一些門戶設定。首先,我們要關閉所有人的開放註冊。為此,請單擊上欄帶有警告的 “檢視設定 ”按鈕(皮膚地址;
http://localhost:8080/admin/application_settings/general#js-signup-settings )。在新頁面上,取消選中已啟用註冊,然後儲存更改。

image

下一步應該是更改根使用者。為此,請訪問網站:http://localhost:8080/-/profile/account

然後在更改使用者名稱欄位中輸入名稱。點選 “更新使用者名稱 ”進行批准

image

最後一項更改是修改密碼。為此,請進入以下頁面:OST:8080/-/profile/password/edit 並輸入臨時密碼和新密碼。點選 “儲存密碼 ”批准更改。

GitLab Runner配置

要在 GitLab 中使用 GitLab 執行程式,需要對其進行配置。為了正確配置,我們需要從入口網站複製一個令牌。為此,請訪問地址:http://localhost:8080/admin/runners

點選 “複製令牌 ”按鈕。

image

下一步,它將進入控制檯並執行以下命令:

docker exec -it gitlab-runner gitlab-runner register --url "http://192.168.0.107:8080" --clone-url "http://192.168.0.107:8080" --token glrt-QPPVLqd7-ZD7eFwAXVbZ

啟動後,將出現一個配置模組。該模組提供以下資訊:

輸入 GitLab 例項 URL:確認輸入值(點選Enter鍵)
輸入註冊令牌:輸入之前複製的令牌。
輸入執行程式的描述:輸入執行程式的名稱,例如 docker-runner
輸入執行程式的標記:此處留空
輸入執行器:在此處輸入 docker
輸入預設的 Docker 映象:在這裡我們提供預設的 Docker 映象,例如 maven: latest
正確配置後,我們應該會看到 Runner 註冊成功的確認資訊:

image

gitlab runner config配置檔案

config.toml 中增加如下network_mode = "gitlab-network"

concurrent = 1
check_interval = 0
connection_max_age = "15m0s"
shutdown_timeout = 0

[session_server]
session_timeout = 1800

[[runners]]
name = "devu\bbu\b\b"
url = "
http://192.168.0.107:8080"
id = 1
token = "glrt-C7xexPtY4yfa39wHo3pn"
token_obtained_at = 2024-10-15T01:07:57Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "docker"
clone_url = "
http://192.168.0.107:8080"
[runners.custom_build_dir]
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "ruby:2.7"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
network_mode = "gitlab-network"
shm_size = 0
network_mtu = 0

[[runners]]
name = "javv3"
url = "
http://192.168.0.107:8080"
id = 3
token = "glrt-QPPVLqd7-ZD7eFwAXVbZ"
token_obtained_at = 2024-10-15T01:47:35Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "docker"
clone_url = "
http://192.168.0.107:8080"
[runners.custom_build_dir]
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "maven:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
network_mtu = 0
network_mode = "gitlab-network"

註冊成功可以在Runner控制檯檢視

Runner

http://192.168.0.107:8080/admin/runners


clipboard

配置runner

http://192.168.0.107:8080/admin/runners/3/edit

勾選 Run untagged jobs

Use the runner for jobs without tags in addition to tagged jobs.

clipboard

建立第一個版本庫


設定執行程式後,我們就可以建立第一個版本庫了。為此,請轉到
http://localhost:8080/projects/new 頁面,然後單擊匯入專案

在下一個螢幕中,選擇從以下地址匯入專案: Repo from URL。然後提供 Git 倉庫 URL 地址:https://github.com/czerniga/helloworld.git

最後點選 “建立專案 ”確認

image


建立 CI/CD 管道


要為專案建立 CI/CD 管道,請單擊左側主選單的 CI/CD,然後點選編輯器。螢幕上將顯示建立 .gitlab-ci.yml 檔案的選項,該檔案將包含我們的管道定義。該檔案將在 Git 倉庫中建立

image: maven:latest

stages:
- build
- test

build-job:
stage: build
script:
- echo "Compiling the code..."
- mvn clean package
- echo "Compile complete."
artifacts:
paths:
- target

test-job:
stage: test
dependencies:
- build-job
script:
- ls -al
- echo "Running tests"
- java -cp target/helloworld-1.1.jar com.coveros.demo.helloworld.HelloWorld

上述定義描述了 CI / CD 流程應如何運作。其中最重要的元素是

image:用於構建專案的 docker 映像
階段:流程步驟列表
build-job:構建專案流程的第一步。此外,我們還要儲存工件,以便在下一步中使用
test-job:執行專案的第二步

貼上檔案後,單擊 “提交更改 ”確認更改

批准後,GitLab 將啟動流程。要檢視其結果,請轉到左側選單中的 CI/CD -> Pipelines。在螢幕上,我們會看到第一個任務已經啟動

CI中Build構建成功

clipboard

恭喜您,您剛剛在 GitLab 中建立了第一個 CI/CD 作業!

停止容器
包含我們服務的容器是透過開關在後臺啟動的。如果你想停止門戶,請執行以下命令:

docker-compose down


總結

在本教程中,介紹瞭如何使用一個 GitLab 執行程式來執行 GitLab。這裡給出的配置會導致所有網站資料都儲存在你的計算機/伺服器上的目錄中。因此,當容器停止或移除時,資料不會被刪除。



今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 專案管理, 產品管理,資訊保安,團隊建設 有參考作用 , 您可能感興趣的文章:
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
影片直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續整合/CD
網際網路電商購物車架構演變案例
網際網路業務場景下訊息佇列架構
網際網路高效研發團隊管理演進之一
訊息系統架構設計演進
網際網路電商搜尋架構演化之一
企業資訊化與軟體工程的迷思
企業專案化管理介紹
軟體專案成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
專案管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
網際網路資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之效能實時度量系統演變

如有想了解更多軟體設計與架構, 系統IT,企業資訊化, 團隊管理 資訊,請關注我的微信訂閱號:

image_thumb2_thumb_thumb_thumb_thumb[1]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 該文章也同時釋出在我的獨立部落格中-Petter Liu Blog。

相關文章