搭建屬于自己的 Git 倉庫:使用 GitLab
文章目錄
- 搭建屬于自己的 Git 倉庫:使用 GitLab
- 什么是 GitLab?
- 準備工作
- 安裝 Docker
- 使用Docker Compose 快速構建GitLab
- 1、從docker compose快速搭建GitLab
- 2、部署到服務器并訪問
- 3、瀏覽器訪問
在現代軟件開發中,版本控制系統(VCS)是不可或缺的工具,它們幫助開發團隊管理代碼庫,跟蹤更改,并協作開發項目。Git 是一種流行的分布式版本控制系統,而 GitLab 是一個開源的 Git 倉庫管理工具,提供了強大的功能,包括代碼評審、CI/CD、問題跟蹤等。本文將介紹如何在自己的服務器上搭建一個 GitLab 實例,并創建屬于自己的 Git 倉庫。
什么是 GitLab?
GitLab 是一個基于 Git 的開源平臺,提供了代碼倉庫管理、CI/CD(持續集成和持續交付)、代碼審查、問題跟蹤和項目管理等功能。GitLab 有社區版(GitLab CE)和企業版(GitLab EE),社區版是免費的,企業版提供了更多高級功能。
準備工作
在開始之前,確保你有以下準備工作:
一臺運行 Linux(如 Ubuntu 或 CentOS)的服務器。
具有 sudo 權限的用戶。
已安裝 Docker 和 Docker Compose(可選,用于簡化 GitLab 安裝)。
安裝 Docker
如果你的服務器尚未安裝 Docker,可以參照文章:在CentOS中安裝Docker
也可以使用下面命令快速安裝:
# 更新包索引
sudo apt update# 安裝必要的軟件包
sudo apt install apt-transport-https ca-certificates curl software-properties-common# 添加 Docker 官方 GPG 密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 添加 Docker APT 軟件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 更新包索引
sudo apt update# 安裝 Docker
sudo apt install docker-ce# 啟動并啟用 Docker 服務
sudo systemctl start docker
sudo systemctl enable docker
使用Docker Compose 快速構建GitLab
1、從docker compose快速搭建GitLab
使用docker compose在docker環境下快速部署:
搭建docker compose環境參考文章:docker compose快速安裝
學習docker compose參考文章(本篇博客不需要,只是推薦學習)DockerCompose(初識、安裝、部署) Docker Compose 命令說明文檔
docker-compose.yaml
文件鏈接:https://github.com/sameersbn/docker-gitlab/blob/master/docker-compose.yml
可以點擊下載,也可以新建docker-compose.yaml
文件,將內容復制粘貼。
也可以直接復制(但是建議從官網下載,可能版本會更新之類的):
version: '2.3'services:redis:restart: alwaysimage: redis:6.2command:- --loglevel warningvolumes:- redis-data:/data:Zpostgresql:restart: alwaysimage: sameersbn/postgresql:14-20230628volumes:- postgresql-data:/var/lib/postgresql:Zenvironment:- DB_USER=gitlab- DB_PASS=password- DB_NAME=gitlabhq_production- DB_EXTENSION=pg_trgm,btree_gistgitlab:restart: alwaysimage: sameersbn/gitlab:17.0.0depends_on:- redis- postgresqlports:- "10080:80"- "10022:22"volumes:- gitlab-data:/home/git/data:Zhealthcheck:test: ["CMD", "/usr/local/sbin/healthcheck"]interval: 5mtimeout: 10sretries: 3start_period: 5menvironment:- DEBUG=false- DB_ADAPTER=postgresql- DB_HOST=postgresql- DB_PORT=5432- DB_USER=gitlab- DB_PASS=password- DB_NAME=gitlabhq_production- REDIS_HOST=redis- REDIS_PORT=6379- TZ=Asia/Kolkata- GITLAB_TIMEZONE=Kolkata- GITLAB_HTTPS=false- SSL_SELF_SIGNED=false- GITLAB_HOST=- GITLAB_PORT=10080- GITLAB_SSH_PORT=10022- GITLAB_RELATIVE_URL_ROOT=- GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string- GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string- GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string- GITLAB_ROOT_PASSWORD=- GITLAB_ROOT_EMAIL=- GITLAB_NOTIFY_ON_BROKEN_BUILDS=true- GITLAB_NOTIFY_PUSHER=false- GITLAB_EMAIL=notifications@example.com- GITLAB_EMAIL_REPLY_TO=noreply@example.com- GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com- GITLAB_BACKUP_SCHEDULE=daily- GITLAB_BACKUP_TIME=01:00- SMTP_ENABLED=false- SMTP_DOMAIN=www.example.com- SMTP_HOST=smtp.gmail.com- SMTP_PORT=587- SMTP_USER=mailer@example.com- SMTP_PASS=password- SMTP_STARTTLS=true- SMTP_AUTHENTICATION=login- IMAP_ENABLED=false- IMAP_HOST=imap.gmail.com- IMAP_PORT=993- IMAP_USER=mailer@example.com- IMAP_PASS=password- IMAP_SSL=true- IMAP_STARTTLS=false- OAUTH_ENABLED=false- OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=- OAUTH_ALLOW_SSO=- OAUTH_BLOCK_AUTO_CREATED_USERS=true- OAUTH_AUTO_LINK_LDAP_USER=false- OAUTH_AUTO_LINK_SAML_USER=false- OAUTH_EXTERNAL_PROVIDERS=- OAUTH_CAS3_LABEL=cas3- OAUTH_CAS3_SERVER=- OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false- OAUTH_CAS3_LOGIN_URL=/cas/login- OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate- OAUTH_CAS3_LOGOUT_URL=/cas/logout- OAUTH_GOOGLE_API_KEY=- OAUTH_GOOGLE_APP_SECRET=- OAUTH_GOOGLE_RESTRICT_DOMAIN=- OAUTH_FACEBOOK_API_KEY=- OAUTH_FACEBOOK_APP_SECRET=- OAUTH_TWITTER_API_KEY=- OAUTH_TWITTER_APP_SECRET=- OAUTH_GITHUB_API_KEY=- OAUTH_GITHUB_APP_SECRET=- OAUTH_GITHUB_URL=- OAUTH_GITHUB_VERIFY_SSL=- OAUTH_GITLAB_API_KEY=- OAUTH_GITLAB_APP_SECRET=- OAUTH_BITBUCKET_API_KEY=- OAUTH_BITBUCKET_APP_SECRET=- OAUTH_BITBUCKET_URL=- OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=- OAUTH_SAML_IDP_CERT_FINGERPRINT=- OAUTH_SAML_IDP_SSO_TARGET_URL=- OAUTH_SAML_ISSUER=- OAUTH_SAML_LABEL="Our SAML Provider"- OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient- OAUTH_SAML_GROUPS_ATTRIBUTE=- OAUTH_SAML_EXTERNAL_GROUPS=- OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=- OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=- OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=- OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=- OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=- OAUTH_CROWD_SERVER_URL=- OAUTH_CROWD_APP_NAME=- OAUTH_CROWD_APP_PASSWORD=- OAUTH_AUTH0_CLIENT_ID=- OAUTH_AUTH0_CLIENT_SECRET=- OAUTH_AUTH0_DOMAIN=- OAUTH_AUTH0_SCOPE=- OAUTH_AZURE_API_KEY=- OAUTH_AZURE_API_SECRET=- OAUTH_AZURE_TENANT_ID=volumes:redis-data:postgresql-data:gitlab-data:
打開編輯文件內容:
2、部署到服務器并訪問
-
新建文件夾:
mkdir /home/gitlab
-
上傳文件
docker-compose.yaml
,也可以新建文件,將內容粘貼過去。 -
啟動docker compose
docker-compose up -d
- -d參數:后臺啟動。
-
使用docker ps命令可以看見新增的三個docker容器:
3、瀏覽器訪問
瀏覽器訪問:http://192.168.200.128:80即可進入GitLab的頁面。
按理來說我用GitLab來整合Jenkins,但是服務器資源受限,沒有配置成功,我換成了github來演示。