搭建gitlab伺服器及簡單使用
阿新 • • 發佈:2019-01-10
前述:
本文目的:
- 通過docker搭建gitlab伺服器
- 新建群組devops
- 新建專案core_py
- 新建使用者,他/她在devops組中是主程式設計師
- 新使用者上傳版本庫到gitlab
- 熟悉git遠端操作方法
1 .Git簡介
- Git是一個開源的分散式版本控制系統,用於敏捷高
效地處理任何或小或大的專案。 - Git 是 Linus Torvalds 為了幫助管理 Linux 核心開發
而開發的一個開放原始碼的版本控制軟體。 - Git 與常用的版本控制工具 CVS, Subversion 等不同,
它採用了分散式版本庫的方式,不必伺服器端軟體支
持。 現在常用的git產品有github與gitlab,但是github近期被一直做閉源的微軟收購了,所以現在多用gitlab,但是gitlab上因為是開源的,自己寫的內容放在上面可能會被修改,所以公司內部使用,可以在自己的區域網內搭建gitlab伺服器。
2.Git工作流程
3.Git的工作區、暫存區和版本庫
• 工作區:就是你在電腦裡能看到的目錄
• 暫存區:英文叫stage, 或index。一般存放在 “.git目錄下” 下的index檔案(.git/index)中,所以我們把暫存區有時也叫作索引(index)
• 版本庫:工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫
4.在本地操作Git
- 安裝及配置使用者相關資訊
[root@haproxy1 ~]# yum -y install git //安裝git
[root@haproxy1 ~]# git config --global user.name "Miss Wang" //設定使用者名稱
[root@haproxy1 ~]# git config --global user.email "[email protected]" //設定使用者郵箱
[root@haproxy1 ~]# git config --global core.editor vim //設定git預設編輯器為vim
[root@haproxy1 ~]# git config --list //列出配置資訊[[email protected] ~]# cat ~/.gitconfig //檢視配置資訊
- 建立倉庫
Git 使用 git init 命令來初始化一個 Git 倉庫,Git 的很多命令都需要在 Git 的倉庫中執行,所以 git init是使用 Git 的第一個命令。
[root@haproxy1 ~]# mkdir devops
[root@haproxy1 ~]# cd devops
[root@haproxy1 devops]# git init
初始化空的 Git 版本庫於 /root/devops/.git/
或者以上3條命令用以下一條命令代替:
[root@haproxy1 devops]# git init devops
- 新增檔案到暫存區
新增指定檔案
[root@haproxy1 devops]# echo hello > hello.txt
[root@haproxy1 devops]# git add hello.txt
[root@haproxy1 devops]# git status
# 位於分支 master
#
# 初始提交
#
# 要提交的變更:
# (使用 "git rm --cached <file>..." 撤出暫存區)
#
# 新檔案: hello.txt
#
新增所有檔案
[root@haproxy1 devops]# cp /etc/hosts .
[root@haproxy1 devops]# git add .
[root@haproxy1 devops]# git status -s
A hello.txt
A hosts
- 確認至倉庫:提交之前務必先設定使用者資訊
[root@haproxy1 devops]# git commit -m "add files"
[master(根提交) dee13e2] add files
2 files changed, 7 insertions(+)
create mode 100644 hello.txt
create mode 100644 hosts
[root@haproxy1 devops]# git status
# 位於分支 master
無檔案要提交,乾淨的工作區
[root@haproxy1 devops]# echo world >> hello.txt
[root@haproxy1 devops]# git commit -am "update hello.txt"
[master 4d8999d] update hello.txt
1 file changed, 1 insertion(+)
- 刪除跟蹤檔案
要從 Git 中移除某個檔案,就必須要從已跟蹤檔案清單中移除,然後提交
[root@haproxy1 devops]# git ls-files //檢視版本庫中檔案
hello.txt
hosts
[root@haproxy1 devops]# git rm hosts
rm 'hosts'
[root@haproxy1 devops]# git status
# 位於分支 master
# 要提交的變更:
# (使用 "git reset HEAD <file>..." 撤出暫存區)
#
# 刪除: hosts
#
[root@haproxy1 devops]# git commit -m "rm hosts"
[master b87bfc4] rm hosts
1 file changed, 6 deletions(-)
delete mode 100644 hosts
[root@haproxy1 devops]# git status
# 位於分支 master
無檔案要提交,乾淨的工作區
[root@haproxy1 devops]# git ls-files
hello.txt
5.使用遠端伺服器
- 搭建本地gitlab伺服器(192.168.1.1/24)
在https://mirrors.aliyun.com/centos/7/extras/x86_64/Packages/上下載docker安裝包,先搭建一個docker容器,在docker容器上啟用gitlab中文版映象(下載地址參考https://gitlab.com/xhang/gitlab.git),資料儲存在的docker的宿主機上,使用docker搭載gitlab可以節省宿主機資源。
以下為docker的安裝包
container-selinux-2.42-1.gitad8f0f7.el7.noarch.rpm
container-storage-setup-0.8.0-3.git1d27ecf.el7.noarch.rpm
docker-1.13.1-53.git774336d.el7.centos.x86_64.rpm
docker-client-1.13.1-53.git774336d.el7.centos.x86_64.rpm
docker-common-1.13.1-53.git774336d.el7.centos.x86_64.rpm
oci-register-machine-0-6.git2b44233.el7.x86_64.rpm
oci-systemd-hook-0.1.15-2.gitc04483d.el7.x86_64.rpm
oci-umount-2.3.3-3.gite3c9055.el7.x86_64.rpm
skopeo-containers-0.1.28-1.git0270e56.el7.x86_64.rpm
[[email protected] docker_pkgs]# ls
container-selinux-2.42-1.gitad8f0f7.el7.noarch.rpm
container-storage-setup-0.8.0-3.git1d27ecf.el7.noarch.rpm
docker-1.13.1-53.git774336d.el7.centos.x86_64.rpm
docker-client-1.13.1-53.git774336d.el7.centos.x86_64.rpm
docker-common-1.13.1-53.git774336d.el7.centos.x86_64.rpm
oci-register-machine-0-6.git2b44233.el7.x86_64.rpm
oci-systemd-hook-0.1.15-2.gitc04483d.el7.x86_64.rpm
oci-umount-2.3.3-3.gite3c9055.el7.x86_64.rpm
skopeo-containers-0.1.28-1.git0270e56.el7.x86_64.rpm
[[email protected] docker_pkgs]# yum -y install ./*.rpm
[[email protected] docker_pkgs]# systemctl start docker
[[email protected] docker_pkgs]# systemctl enable docker
[[email protected] docker]# cd images/
[[email protected] images]# ls
gitlab_zh.tar
[[email protected] images]# docker load < gitlab_zh.tar
a94e0d5a7c40: Loading layer 116.5 MB/116.5 MB
88888b9b1b5b: Loading layer 15.87 kB/15.87 kB
52f389ea437e: Loading layer 14.85 kB/14.85 kB
52a7ea2bb533: Loading layer 5.632 kB/5.632 kB
db584c622b50: Loading layer 3.072 kB/3.072 kB
62786ff6a243: Loading layer 75.85 MB/75.85 MB
71bc04f4b7c7: Loading layer 2.048 kB/2.048 kB
26e083d332d8: Loading layer 2.048 kB/2.048 kB
2c02e58e96b8: Loading layer 2.048 kB/2.048 kB
589c7a23de2a: Loading layer 15.87 kB/15.87 kB
44474d2cdcd1: Loading layer 1.359 GB/1.359 GB
41c94e16b901: Loading layer 16.78 MB/16.78 MB
04cafa6a1534: Loading layer 160 MB/160 MB
Loaded image: gitlab_zh:latest
[[email protected] images]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab_zh latest 1f71f185271a 5 months ago 1.63 GB
將物理主機ssh埠改為2222後,起動容器
[[email protected] images]# vim /etc/ssh/sshd_config
[[email protected] images]# sed -n '/Port/p' /etc/ssh/sshd_config
Port 2222
#GatewayPorts no
[[email protected] images]# sed -n '/^Port/p' /etc/ssh/sshd_config
Port 2222
[[email protected] images]# systemctl restart sshd
[[email protected] images]# docker run -d -h gitlab --name gitlab -p 443:443 -p 80:80 -p 22:22 --restart always -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data gitlab_zh //後臺執行gitlab容器,主機名為gitlab,容器名為gitlab,使用者可以通過web的443和80埠訪問,也可以通過ssh的22埠訪問,並且開機自啟容器,將宿主機的/srv/gitlab/目錄下的配置檔案及日誌分別對映到容器,並且資料各儲存一份在宿主機和容器的/srv/gitlab/data內
4303339de8eb7f42647399eea665ec60077762d4b8b9c5522c04bfbc091a6719
- 初始化gitlab伺服器
瀏覽器位址列輸入gitlab伺服器的ip地址192.168.1.1
密碼需大於8位
預設使用者名稱為root
新增gitlab專案
• 建立群組group
使用群組管理專案和人員是非常好的方式
• 建立專案project
儲存程式碼的地方,裡面還包含問題列表、維基文件以及其他一些Gitlab功能
• 建立成員member
新增你的團隊成員或其他人員到Gitlab
建立群組
建立專案
建立使用者
建立使用者後,再次編輯可設定密碼
root使用者將新使用者加入組中,並設定新使用者為“主程式設計師”
新使用者初次登陸,需設定自己的密碼
使用者管理
- 將本地生成的公鑰上傳至伺服器
[[email protected] ~]# ssh-keygen -t rsa -C "[email protected]" -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:nU0uhh3ZIKuKoGxHfRs7TA+VQx6czxap5mYuzsqllpQ [email protected]
The key's randomart image is:
+---[RSA 4096]----+
| ooo . |
| o=o* |
| .=* + |
| . ..*.X |
|. . .o=S B o |
|o... E+ *= . |
|.o..o .*+. |
|. . .o+... |
| .+oo. |
+----[SHA256]-----+
[[email protected] ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDIjvZUK8jFGABi1BOCfiquqw77x3TrWQOF1xhbk32T0DrBCsgbVbNQ464of5LzQ8xTWuviH/myEgzQVzDuGzUkaj2Y3snj4rI4ZABl392n8gwBOa+3FDjch1gbRII+ZwO++iMFMJScxjHRoO9Lo4K4gxAhPYWWfuWBaPouZixDbUGPW6KjnD0N246t5EsnH8maMIjb9w8h1jtJfhgdnQv3By9j4mVYI37H56rWfGhrHUh9zYCj0YBn78IEy90Z/559CaQ3S5CpaT+75OnPh+DKTrJA8uRy3s6UbWjPRrVrCf6AoBGAsOlh8ubwn25UdKnn1CsDaPSmLZdZl+juFUQMiXapQkVjemoxgRHXJgpUfBfY48y5PhNK7HBHYc1t8tFiVIBXti6BVqHucagetLHiZuRK+2403SacnfPDx73rFQlta5Ad4KeNzqDpNbCphtcKlB5p9uWgRFR47TwMgwfcVMOnDLojrr3c1d2xxi4IKW8Yo8JD65YUxQlR9coMuzwX4SBKb6zreq0F4hHTJfAoz/EPT1osCAO+Lxq0wzbUKJy4Pea+4ftlQDFDQTQtAD2XYQxAqelvUJLLf/4FL4EkC328+qjCQj77XGGR8XFXpu04jA6MDSeWQsLljOVOOQ1ypba12EMh8lYo0zq0epnI68Gco06jOtEiQbQRk8LnKQ== [email protected]
- 將本地倉庫推送至伺服器,遠端倉庫伺服器的預設名稱為 origin
[root@haproxy1 devops]# git remote rename origin old-origin [root@haproxy1 devops]# git remote add origin \ [email protected]:/devops/core_py.git
[root@haproxy1 devops]# git push -u origin --all
- 新增新檔案
[root@haproxy1 devops]# echo '#this is a test' > hi.py
[root@haproxy1 devops]# git add hi.py
[root@haproxy1 devops]# git commit hi.py -m '新的測試' [root@haproxy1 devops]# git push origin master
- 下載程式碼到本地
[[email protected] ~]# git clone [email protected]:devops/core_py.git
[[email protected] ~]# ls -a core_py/
. .. .git hello.py hi.py
- 更新程式碼到本地
[root@haproxy1 core_py]#git pull