一、簡介
GitLab 是一個用於倉庫管理系統的開源項目,使用git作為代碼管理工具,並在此基礎上搭建起來的web服務。類似github,常用在企業內部做git私有倉庫使用;
二、gitlab安裝
系統環境准備
最小化安裝centos7,我們需要做如下配置
1、安裝基礎包
yum install vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion -y yum install curl policycoreutils openssh-server openssh-clients postfix -y
2、添加epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3、關閉防火牆
systemctl stop firewalld systemctl disable firewalld
4、關閉selinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux setenforce 0
配置好系統環境,我們就可以來安裝gitlab了
安裝gitlab我們可以配置gitlab的yum源,然后用yum安裝,也可以直接去倉庫下載rpm包,然后再使用yum安裝都可以
配置gitlab-ce的yum源
[root@node06 ~]# cat /etc/yum.repos.d/gitlab.repo [gitlab-ce] name=gitlab-ce baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7 repo_gpgcheck=0 gpgcheck=0 enabled=1 gpgkey=https://packages.gitlab.com/gpg.key [root@node06 ~]#
驗證:用yum info gitlab-ce看看是否能夠查詢到gitlib-ce包的信息

提示:如果用yum info gitlab-ce能夠查詢到gitlab-ce的信息,說明我們的gitlab-ce的yum倉庫配置沒有問題;接下來我們就可以使用yum 來安裝gitlab-ce;當然如果你覺得倉庫中的gitlab版本太新,想用其他版本,我們也可以去倉庫地址中找相應的rpm下載進行安裝;
安裝gitlab-ce
[root@node06 ~]# yum install -y gitlab-ce Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Resolving Dependencies --> Running transaction check ---> Package gitlab-ce.x86_64 0:13.4.3-ce.0.el7 will be installed --> Processing Dependency: policycoreutils-python for package: gitlab-ce-13.4.3-ce.0.el7.x86_64 --> Running transaction check ---> Package policycoreutils-python.x86_64 0:2.5-34.el7 will be installed --> Processing Dependency: policycoreutils = 2.5-34.el7 for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: setools-libs >= 3.3.8-4 for package: policycoreutils-python-2.5-34.el7.x86_64 --> Processing Dependency: libsemanage-python >= 2.5-14 for package: policycoreutils-python-2.5-34.el7.x86_64 ……省略部分內容…… Installed: gitlab-ce.x86_64 0:13.4.3-ce.0.el7 Dependency Installed: audit-libs-python.x86_64 0:2.8.5-4.el7 checkpolicy.x86_64 0:2.5-8.el7 libcgroup.x86_64 0:0.41-21.el7 libsemanage-python.x86_64 0:2.5-14.el7 policycoreutils-python.x86_64 0:2.5-34.el7 python-IPy.noarch 0:0.75-6.el7 setools-libs.x86_64 0:3.3.8-4.el7 Dependency Updated: audit.x86_64 0:2.8.5-4.el7 audit-libs.x86_64 0:2.8.5-4.el7 libsemanage.x86_64 0:2.5-14.el7 policycoreutils.x86_64 0:2.5-34.el7 Complete! [root@node06 ~]#
配置gitlab-ce

提示:如果沒有其他要求,我們配置訪問gitlab的地址就可以直接啟動gitlab,通常除了配置external_url外,我們可能還需要用到發送郵件的需要;比如用戶修改密碼通過郵件的形式修改;
配置gitlab-ce郵件發送
首先我們要有一個互聯網郵箱地址,然后登錄到互聯網郵箱,開啟smtp功能,我這里以163的郵箱為例,其他郵箱開通smtp的方式都是大同小異




提示:這里可以用手機直接掃二維碼,也可以點擊手動發短信;用手機掃二維碼直接生成短信內容和收件人,然后發送短信后再點擊我已發送;

提示:如果是手動發送短信,就用你注冊郵箱留到手機號,發送以上短信內容即可,然后點擊我已發送;

提示:最后短信驗證沒有問題,它會給我們生成一個授權碼,我們把這個授權碼要記住,然后在gitlab中配置時需要用到這個授權碼;
gitlab-ce配置郵件通知

提示:這里需要注意一點,如果我們要使用tls加密方式發送郵件,那么我們上面的smtp的端口就要更改為465,並且開啟后面的smtp_tls為true;保存上面的配置信息后,我們需要使用gitlab-ctl reconfigure來初始化gitliab;
發送郵件的配置
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.163.com" gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_user_name'] = "gitlab_sev@163.com" gitlab_rails['smtp_password'] = "WCNIFZJFQFFYZDCI" gitlab_rails['smtp_domain'] = "163.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false user['git_user_email'] = "gitlab_sev@163.com" gitlab_rails['gitlab_email_from'] = 'gitlab_sev@163.com'
初始化gitlab
[root@node06 ~]# gitlab-ctl reconfigure
提示:這個初始化的過程有點長,我們耐心等待就好;

提示:初始化完成后,它默認就把對應的服務啟動起來了;我們就可以直接用瀏覽器訪問剛才配置的url;它上面之所以初始化很久,是因為它后面要啟動配置一堆服務;我們可以使用gitlab-ctl status來查看,它到底啟動了那些服務;
查看gitlab的狀態

用瀏覽器訪問宿主機的80端口

提示:第一次訪問,它會讓我們先更改密碼;我們配置新密碼后單擊下面的藍色按鈕提交密碼;這個是管理員的密碼;這里需要注意,我們的密碼必須要大於8位,小於8位它會說我們給的密碼太短了;
用root登錄

提示:gitlab默認管理員用戶是root,密碼就是我們剛才設置的密碼 ;
默認登錄后的首頁

到此gitlab就正常運行起來了
注冊帳號


提示:這里是讓我們選擇一個角色;這里面有很多角色,我們選擇一個即可;

提示:到此,tom用戶就注冊並成功登錄到gitlab上了;后續tom用戶就可以登錄自己的帳號在上面創建項目,組等等操作;
關閉帳號注冊功能

提示:用root帳號登錄,點擊admin area



提示:把紅框前的對勾去掉,然后點擊下面的save changes;
驗證:現在退出root帳號,看看登錄界面是否還有注冊界面?

提示:可以看到注冊界面就沒有了;這樣做主要可以統一管理的目的;如果作為一個私有倉庫,應該由管理員統一管理帳號、權限;這樣做也是一個比較安全的做法;
使用root用戶添加帳號

提示:登錄root帳號,點擊上面的小扳手,然后點擊newuser,就會彈出添加帳號的界面;

提示:填寫好帳號名和郵箱后,直接點擊后面的create user即可;后面的訪問權限可以執行設定,如果是管理員選擇后面的admin級別即可;
查看郵件

提示:我們點擊創建用戶以后,gitlab就會根據我們填寫的郵件地址,給對應郵件地址發送郵件;如上所示;我們設置密碼就可以直接點擊上面的連接,直接設置密碼即可,如下;

提示:把密碼設置以后,點擊change your password即可;

提示:我們設置了密碼以后,gitlab會發郵件給我們說密碼已經設置,登錄點擊那個那個地址;如上圖所示;我們點擊上面的連接,就可以跳轉到gitlab的登錄界面;然后登錄剛才創建的用戶和設置的密碼就好;
修改用戶密碼

提示:在root用戶新建用戶后的界面上,點擊edit,就可給剛才新建的用戶設置密碼;或者用root用戶登錄,點擊上面的小扳手,找到下面的用戶名,然后點擊,也可以跳轉到上面的界面;如下

提示:點擊對應的用戶名稱,就可以跳轉到山上一個圖的界面,然后我們在點擊edit進行編輯即可;

提示:我們輸入兩次相同的密碼后,點擊下方的save changes即可把對應用戶的密碼修改成我們剛才輸入的密碼;

提示:管理員修改密碼后,gitlab會發送一份郵件給用戶,說管理員把密碼重置了;點擊鏈接可以登錄;

提示:使用jerry登錄,它會提示我們修改密碼,我們把當前密碼寫上,然后在后面再寫新密碼,點擊set new password即可;
除上面管理員協助修改密碼,我們也可以去登錄界面點擊忘記密碼進行修改


提示:這里的email要填寫我們對應帳號后的郵件地址,然后點擊reset password;

提示:這里提示我們如果我們填寫的郵件地址在我們數據庫里能夠找到,就會發送重置密碼的郵件;顯然,如果數據庫里沒有對應的郵件地址,也就不能給我們發送郵件;

提示:收到郵件后,我們可以點擊reset password,然后他會跳轉到重置密碼的界面;

創建group

提示:使用root用戶登錄gitlab,然后點擊上面的小扳手,點擊new group,就可以跳轉到創建項目的界面;

提示:創建組的時候,我們要選擇私有,互聯網,還是公開;如果我們選擇私有,就表示只有在組里的成員才能夠看到關聯到組中的項目,如果是公開,表示登錄的用戶都看得到;互聯網指所有用戶都看得到,即便沒有登錄;選擇好,我們就可以點擊下面的create group按鈕;

提示:創建好組以后,我們要關聯用戶到這個組里來,並且指定其在組里的權限,這里的權限有guest,ower等等,如果不清楚個角色的權限,可以點擊上面的here哪里;選擇好用戶和角色以后,就可以點擊add users to group;

提示:把用戶關聯到對應組里以后,用戶會收到一封郵件,如果我們不想待在對應的組里,可以選擇離開組;如下

創建項目

提示:使用root用戶登錄gitlab,然后點擊上面的小扳手,點擊new project,就可以跳轉到創建項目的界面;

提示:這里和創建組有點類似,這里需要注意一點,我們要選擇創建的項目屬於組還是用戶,如果是組就選擇組名,對於組中的成員都會對該項目擁有對應角色的權限;然后選擇好以后,點擊create project;

提示:項目創建好以后,我們就可以克隆項目到本地了;如上復制對應協議的連接地址,在本地執行git clone 就可以把對應的項目克隆到本地;我們也可以直接在項目中添加文件等等;在項目的下面它告訴我們在命令行中如何克隆項目,提交等等操作;
克隆剛才創建的項目到本地

提示:這里使用git clone克隆,它要求我們輸入用戶名和密碼,用戶名和密碼驗證正確后,我們就可以把對應的項目克隆到本地;這里警告我們所我們克隆的項目是一個空倉庫;
進入剛才克隆的倉庫,添加文件

將本地倉庫push到遠端倉庫

提示:這里提示我們沒有指定分支;解決辦法明確指定把本地的origin分支 push到遠端的master分支;

驗證:在gitlab上,看看我們push的項目中是否有passwd文件?

到此,在客戶端使用git命令可以將gitlab上創建的項目拖到本地,也可以將本地倉庫push到遠端倉庫;
在gitlab上更改passwd文件內容

在本地使用git fetch 取遠端倉庫更新
[root@node06 test]# git fetch Username for 'http://192.168.0.46': jerry Password for 'http://jerry@192.168.0.46': remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From http://192.168.0.46/test-app/test fecc791..08cbf1f master -> origin/master [root@node06 test]#
提示:git fetch命令是從遠端倉庫取更新到本地,但並不與本地分支進行合並;
將更新應用到本地

取回遠程服務器更新,而后與本地的指定分支合並

提示:以上使用git pull命令是將遠端倉庫更新取回,並和本地的master合並;默認不加后面的遠端分支和本地分支,默認遠端是origin,本地是master;如果本地或遠端有多個分支需要明確指出;
驗證:看看本地的passwd是否變了?

在本地新建分支,然后push到遠端倉庫

提示:從上面反饋的顯示在遠端倉庫生成了一個新的分支;
驗證:去遠端gitlab上查看是否有devel分支生成?對應分支下是否有fstab和passwd文件?

刪除遠端倉庫分支
[root@node06 test]# git push origin :devel Username for 'http://192.168.0.46': jerry Password for 'http://jerry@192.168.0.46': To http://192.168.0.46/test-app/test.git - [deleted] devel [root@node06 test]#
驗證:查看遠端gitlab對應倉庫是否還有devel分支?

提示:可以看到gitlab上的devel分支就沒有了;到此gitlab經過測試都是正常工作的,后續我們就可以使用我們搭建的gitlab來管理項目,代碼管理;
