一、簡介
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來管理專案,程式碼管理;