我們一起聊聊絲滑的代碼管理
你好,我是悟空。
本文主要內(nèi)容如下:
圖片
一、背景
最近需要修改一個(gè)很重要的項(xiàng)目源碼,但是這個(gè)源碼的代碼倉庫權(quán)限又不能給我們,只給了一份拷貝的版本,為了能夠更好地對這份代碼進(jìn)行代碼版本管理,我決定在本地搭建一個(gè) Gitlab 倉庫,來和其他同事進(jìn)行協(xié)同開發(fā)。
二、環(huán)境依賴
1、本地部署一臺(tái) Ubuntu 虛擬機(jī)
2、Ubuntu Docker 環(huán)境
3、能否訪問 docker hub 網(wǎng)絡(luò)(如果不能訪問,用離線方式安裝 Gitlab 也可以)
三、部署 Gitlab
3.1 采用 docker compose 方式啟動(dòng) Gitlab 容器
- 拉取 Gitlab 鏡像
- 編寫 docker-compose.yml 文件
- 啟動(dòng) Gitlab 容器
(如果你不喜歡用 docker compose 方式,也可以直接用 docker run 的方式啟動(dòng) Gitlab 容器。)
3.1.1 拉取 Gitlab 鏡像
docker pull gitlab/gitlab-ee:latest
3.1.2 編寫 docker-compose.yml 文件
創(chuàng)建一個(gè) docker-compose.yml 文件:
vim docker-compose.yml
內(nèi)容如下:
version: '3.3'
services:
web:
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
ports:
- '8000:80'
- '8443:443'
- '2222:22'
volumes:
- '/home/wukong/gitlab/config:/etc/gitlab'
- '/home/wukong/gitlab/logs:/var/log/gitlab'
- '/home/wukong/gitlab/data:/var/opt/gitlab'
shm_size: '256m'
配置說明:
- version: '3.3':指定了 Docker Compose 文件的版本。
- services::指示接下來定義服務(wù)部分的開始。
- web::這是服務(wù)的名稱,可以自定義。在這個(gè)示例中,服務(wù)名為 "web"。
- image: 'gitlab/gitlab-ee:latest':指定要使用的 Docker 鏡像。在這里,使用了 gitlab/gitlab-ee 鏡像的最新版本。
- restart: always:指定容器的重新啟動(dòng)策略為始終重新啟動(dòng)。
- hostname: 'gitlab.example.com':設(shè)置容器的主機(jī)名為 "gitlab.example.com"。
- environment::定義容器內(nèi)的環(huán)境變量。
- GITLAB_OMNIBUS_CONFIG: |:這是一個(gè)環(huán)境變量的名稱,其值是一個(gè)多行字符串,表示 GitLab 配置文件的內(nèi)容。
- external_url 'https://gitlab.example.com':在 GitLab 配置文件中設(shè)置 GitLab 的外部 URL 為 "https://gitlab.example.com"。
- ports::定義容器與主機(jī)之間的端口映射關(guān)系。
- '8000:80':將容器的 80 端口映射到主機(jī)的 8000 端口。
- '8443:443':將容器的 443 端口映射到主機(jī)的 8443 端口。
- '2222:22':將容器的 22 端口(SSH)映射到主機(jī)的 2222 端口。
- volumes::定義容器內(nèi)的數(shù)據(jù)卷掛載關(guān)系。
- '/home/tss/gitlab/config:/etc/gitlab':將主機(jī)上的 /home/tss/gitlab/config 目錄掛載到容器內(nèi)的 /etc/gitlab 目錄。
- shm_size: '256m':設(shè)置容器的共享內(nèi)存大小為 256MB。
還需要在 Ubuntu 上創(chuàng)建一些文件夾:
- /home/wukong/gitlab/config
- /home/wukong/gitlab/logs
- /home/wukong/gitlab/data
3.1.3 啟動(dòng)容器
在文件 docker-compose.yml 的所在的目錄下執(zhí)行以下命令啟動(dòng) Gitlab 容器并查看容器狀態(tài):
docker-compose up -d
docker ps
圖片
等幾分鐘后,容器狀態(tài)會(huì)從 starting 狀態(tài)變?yōu)?nbsp;healthy 狀態(tài)。
更多配置和部署方式詳見官網(wǎng)文檔:
https://docs.gitlab.com/ee/install/docker.html
3.2 訪問 Gitlab
可以通過 Ubuntu 虛擬機(jī)的 IP 的方式來訪問 Gitlab 網(wǎng)站,也可以通過域名的方式來訪問Gitlab 網(wǎng)站。
用瀏覽器打開 Gitlab 網(wǎng)站打開后如下所示:
圖片
3.2.1 通過 IP 訪問
瀏覽器直接打開如下地址:
https://<虛擬機(jī) IP 地址>:8443/
3.2.2 通過域名訪問
host 配置:
<虛擬機(jī) IP 地址> gitlab.example.com
瀏覽器打開如下地址:
https://gitlab.example.com:8443/
3.3 修改 root 密碼
打開 Gitlab 網(wǎng)站后,就會(huì)讓你登錄,即使你選擇注冊,也需要等管理員審批通過才能登錄。所以我們首先得用管理員賬號登錄,但是我們是不知道賬號密碼的,所以需要先修改管理員的密碼。
- 1.查看運(yùn)行的容器ID
sudo docker ps
- 2.進(jìn)入容器
sudo docker exec -it <容器 ID> /bin/bash
- 3.進(jìn)入 gitlab的 bin 目錄
cd /opt/gitlab/bin
- 4.執(zhí)行 gitlab-rails console
gitlab-rails console
圖片
- 5.找到 root 的用戶
u=User.where(id:1).first
因?yàn)?root 用戶的 id 是默認(rèn)用戶,所以 id 為 1。
圖片
- 6.修改 password
u.password='passjava'
- 7.修改確認(rèn)密碼
u.password\_cnotallow='passjava'
圖片
- 8.保存修改
輸入u.save,然后回車,等到輸出 true,這時(shí),密碼修改成功。
u.save
圖片
密碼修改成功后,退出容器,然后回到登錄頁面,輸入用戶名和密碼即可登錄管理員賬號。用戶名:root,密碼:passjava。
四、測試 Gitlab 功能
4.1 注冊用戶
在注冊頁面填寫用戶信息,注冊成功后需要等待管理員審批。
圖片
管理員審批界面
圖片
4.2 測試 創(chuàng)建 Group 和 Project
管理員創(chuàng)建 Group
圖片
管理員創(chuàng)建的 Project
圖片
添加用戶到這個(gè)倉庫里面。
https://gitlab.example.com:8443/test-group/passjava/-/project_members
圖片
4.3 添加 SSH Key
用戶登錄成功后,可以看到自己的 passjava 項(xiàng)目,不過還需要添加 SSH Key 才能 push 或 pull 項(xiàng)目。
圖片
如果本地沒有 SSH key,則可以參考下面這個(gè)鏈接生成 SSH Key。
https://gitlab.example.com:8443/help/ssh/index#generate-an-ssh-key-pair
4.4 用戶 clone 項(xiàng)目
clone 倉庫到本地
git clone https://gitlab.example.com:8443/test-group/passjava.git
或
git clone https://192.168.56.12:8443/test-group/passjava.git
提示輸入密碼,輸入用戶名和密碼:
圖片
圖片
4.4 提交代碼到 Gitlab 倉庫
圖片
附錄:離線安裝 Gitlab
docker pull gitlab/gitlab-ee:latest
打包測試環(huán)境的 gitlab鏡像,這個(gè)命令會(huì)將服務(wù)器上 gitlab 鏡像打包成 tar 包,這樣我們就方便拷貝到其他服務(wù)器上了。執(zhí)行打包鏡像命令:
sudo docker save -o gitlab-ee.tar gitlab/gitlab-ee:latest
因?yàn)楸4娴?tar 包權(quán)限不夠,所以設(shè)置下權(quán)限為 777。執(zhí)行修改權(quán)限的的命:
sudo chmod 777 gitlab-ee.tar
將這個(gè) tar 包拷貝新環(huán)境的三臺(tái)服務(wù)器上。執(zhí)行導(dǎo)入鏡像的命令:
sudo docker load -i gitlab-ee.tar
然后按照第三章的 3.1.2 和 3.1.3 內(nèi)容啟動(dòng)容器。
關(guān)于我
InfoQ 簽約作者、藍(lán)橋簽約作者、阿里云專家博主、51CTO 紅人。