1. 程式人生 > >搭建gitlab伺服器及簡單使用

搭建gitlab伺服器及簡單使用

前述:
本文目的:
- 通過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