gitlab

一、git、github、gitlab的區別
Git是版本控制系統,Github是在線的基於Git的代碼託管服務。
GitHub是2008年由Ruby on Rails編寫而成。GitHub同時提供付費賬戶和免費賬戶。這兩種賬戶都可以創建公開的代碼倉庫,只有付費賬戶可以創建私有的代碼倉庫。
Gitlab解決了這個問題, 可以在上面創建免費的私人repo。
二、gitlab server搭建過程
#yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python

systemctl start postfix systemctl enable postfix #收發郵件用的

gitlab的下載地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
安裝gitlab:
[root@vm1 ~]# yum -y install gitlab-ce-10.7.2-ce.0.el7.x86_64.rpm
gitlab的配置文件 /etc/gitlab/gitlab.rb, 編輯如下:
[root@vm1 ~]# vim /etc/gitlab/gitlab.rb
[root@vm1 ~]# grep "^external_url" /etc/gitlab/gitlab.rb
externalurl 'http://192.168.60.119' 綁定監聽的域名或IP
[root@vm1 ~]#
使用gitlab-ctl reconfigure 自動配置,並安裝數據庫,初始化信息,如下所示(第一次使用配置時間較長):
[root@vm1 ~]# gitlab-ctl reconfigure
.....
使用gitlab-ctl start 啓動gitlab服務,如下所示:
[root@vm1 ~]# gitlab-ctl start
ok: run: gitaly: (pid 22896) 2922s
ok: run: gitlab-monitor: (pid 22914) 2921s
ok: run: gitlab-workhorse: (pid 22882) 2922s
ok: run: logrotate: (pid 22517) 2987s
ok: run: nginx: (pid 22500) 2993s
ok: run: node-exporter: (pid 22584) 2974s
ok: run: postgres-exporter: (pid 22946) 2919s
ok: run: postgresql: (pid 22250) 3047s
ok: run: prometheus: (pid 22931) 2920s
ok: run: redis: (pid 22190) 3053s
ok: run: redis-exporter: (pid 22732) 2962s
ok: run: sidekiq: (pid 22472) 3005s
ok: run: unicorn: (pid 22433) 3011s
[root@vm1 ~]#
[root@vm1 ~]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 22500 root 7u IPv4 50923 0t0 TCP :http (LISTEN)
nginx 22501 gitlab-www 7u IPv4 50923 0t0 TCP
:http (LISTEN)
[root@vm1 ~]#
修改配置文件,添加smtp郵件功能
[root@vm1 ~]# vim /etc/gitlab/gitlab.rb
grep -P "^[^#].*smtp
|user_email|gitlab_email" /etc/gitlab/gitlab.rb

如果這裏發送郵件失敗可能就是SMTP配置的原因,如果smtp_tls沒變的話端口是465的這裏就是true,否則就是false;

使用gitlab-rails console命令進行發送郵件測試,如下所示:
[root@vm1 ~]# gitlab-rails console
Loading production environment (Rails 4.2.10)
irb(main):001:0> Notify.test_email('[email protected]', 'Message Subject', 'Message Body').deliver_now

Notify#test_email: processed outbound mail in 2219.5ms

Sent mail to [email protected] (2469.5ms)
Date: Fri, 04 May 2018 15:50:10 +0800
From: Admin <[email protected]>
Reply-To: Admin <[email protected]>
To: [email protected]
Message-ID: <[email protected]>
Subject: Message Subject
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"&gt;
<html><body><p>Message Body</p></body></html>

=> #<Mail::Message:70291731344240, Multipart: false, Headers: <Date: Fri, 04 May 2018 15:50:10 +0800>, <From: Admin <[email protected]>>, <Reply-To: Admin <[email protected]>>, <To: [email protected]>, <Message-ID: <[email protected]>>, <Subject: Message Subject>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
irb(main):002:0>quit

三、gitlab的使用
在瀏覽器中輸入 http://192.168.60.119/ ,然後 change password: ,並使用root用戶登錄 即可 (後續動作根據提示操作)
修改密碼也可以:gitlab-rails console production
irb(main):001:0> user = User.where(id: 1).first // id爲1的是超級管理員
irb(main):002:0>user.password = 'yourpassword' // 密碼必須至少8個字符
irb(main):003:0>user.save! // 如沒有問題 返回true
exit // 退出

如果需要手工修改nginx的port ,可以在gitlab.rb中設置 nginx['listen_port'] = 8000 ,然後再次 gitlab-ctl reconfigure即可
登錄gitlab 如下所示:

創建 group ,組名爲plat-sp ,如下所示:

去掉用戶的自動註冊功能:
admin are -> settings -> Sign-up Restrictions 去掉鉤鉤,然後拉到最下面保存,重新登錄

創建用戶Tompson如下所示:

同樣的方法,再創建Eric 、Hellen 用戶。用戶添加完畢後,gitlab會給用戶發一封修改密碼的郵件,各用戶需要登錄自己的郵箱,並點擊相關的鏈接,設置新密碼。
將用戶添加到組中,並指定Tompson爲本組的owner:

同樣的方法將用戶Eric、Hellen也添加到組中,並指定他們爲Developer:

使用Tompson用戶的身份與密碼登錄到gitlab界面中,並創建Project ,如下所示:

指定項目的存儲路徑和項目名稱,如下所示

爲項目創建Dev分支,如下所示:

在 client 上添加Tompson的用戶:
[root@vm2 ~]# useradd Tompson
[root@vm2 ~]# useradd Eric
[root@vm2 ~]# useradd Hellen
[root@vm2 ~]# su - Tompson
[Tompson@vm2 ~]$ ssh-keygen -C [email protected]
Generating public/private rsa key pair.
Enter file in which to save the key (/home/Tompson/.ssh/id_rsa):
Created directory '/home/Tompson/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/Tompson/.ssh/id_rsa.
Your public key has been saved in /home/Tompson/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:SAoAH2zSxqEJqVgKKrxM5XMi6tKe61JMRdwMhwBNIrE [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|XX==o=. |
|BOo+.o |
|E
=. . |
|*+.= + . |
|=oo = . S |
|.oo |
|.o |
|o... |
|.+=. |
+----[SHA256]-----+
[Tompson@vm2 ~]$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ8cRGHej+sZzlmK36W5MUXMLOGdTwFI9Jj44mGuabZCrlYW4GDpL6ppezN+Sur0wHtnKonYJzm8ntqS0S0UHyaPPQPl9Mrs/6Z4VrXZ/4RlqHdWeSrmOwCBQld0l8HvrmP4TyGHrOreO8uZqimd/Z+OiMqnYRZzENX11Pti/Px5g1MtJcoCi9uLtF42QYrt1X/fzAyPU9C5/5ZUq4Jln3EF20bzcA52oAzZIl0jrhI0TeTeW6zYq+KxdHGshL+qG7+Ne+akPOe4Ma5BQjcMZ2dQ2kbGuozXmLT8RDcj9YRKceQsUdTI71lJpwrWKGn8Vhra0EaK3hgoTuvMYaGfOF [email protected]
將Tompson的公鑰複製到gitlab中: 使用Tompson用戶的身份與密碼登錄到gitlab界面中,然後在ssh-key中添加 相關的key ,如下所示:

需要在終端導入數據:

1 ssh-keygen -C [email protected]
2 cat .ssh/id_rsa.pub
3 ls
4 git clone [email protected]:aaa/xixixi.git
5 vim a.txt
6 git add .
7 ls
17 vim a.txt
18 git add .
19 git commit -m '20180603'
20 git push -u origin dev
[jerry@zhuzhu xixixi]$ git checkout master
切換到分支 'master'
[jerry@zhuzhu xixixi]$ git branch
dev

  • master
    爲Jerry用戶配置git ,如下所示:
    8 cd xixixi/
    9 vim a.txt
    10 git add .
    11 git commit -m "dedede"
    12 git config --global user.email "[email protected]"
    13 git config --global user.name "jerry"
    14 git push -u origin master
    15 git checkout dev
    使用Eric用戶登錄,並clone 項目,如下所示:
    [root@vm2 ~]# su - Eric
    [Eric@vm2 ~]$ ssh-keygen -C [email protected]
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/Eric/.ssh/id_rsa):
    Created directory '/home/Eric/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/Eric/.ssh/id_rsa.
    Your public key has been saved in /home/Eric/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:VZaJvjA5SJZEB+yuRpDBNHCECCZ5R8X0DYcNE0f1B6E [email protected]
    The key's randomart image is:
    +---[RSA 2048]----+
    |O=..Bo*+o+oo. |
    |
    .+.. o.oooo . |
    | . + + ..oo E . .|
    | o o =.. . |
    | . . S+ . |
    | . . . |
    | . . |
    | o |
    | . |
    +----[SHA256]-----+

[Eric@vm2 ~]$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDxQcn4UjRW/5PT5witeV9+S2w8WK5ouawHxEF7s9wuWsT4pqhcu5BN74NG3CPaq1jJZnkV+aQsTw+60BAd1gOK0FBbKWxmohmE61n9vfpUT5igJ72t2jpXjfKwLIHw+Iq5yM4yUhkwSsoBuZkxYSEltnj8OvXaOlCDYnXuGBa9+xO8f5yVIcOtiwRvv+Y1PRRzSIcazPVZax9FLK26t1R4NPiY4xWkIJyK2OrKMeiaBBzyMfWzHdmsCWa51oSrYSmz3PDBXpzIBs3OdKxcaJs9Lc5u87YCV5RMUjLrPcA7nPK6crOabLXhz3d5GSYggMTOByQkyKOo7WlYpARCHOt/ [email protected]
[Eric@vm2 ~]$
同樣需要使用Eric用戶登錄gitlab web 界面,並添加相應的ssh-key。然後設置git ,並clone項目:
[Eric@vm2 ~]$ git config --global user.email "[email protected]"
[Eric@vm2 ~]$ git config --global user.name "Eric"
[Eric@vm2 ~]$ git clone [email protected]:plat-sp/chathall.git
Cloning into 'chathall'...
The authenticity of host '192.168.60.119 (192.168.60.119)' can't be established.
ECDSA key fingerprint is SHA256:CDxAQmj6gUkIxB6XUofbZ853GuPM5LS2QO4a5dD7jRo.
ECDSA key fingerprint is MD5:4e:20:72:a7:46:c6:d7:5d:bb:9d:ce:c3:f3:da:43:f9.
Are you sure you want to continue connecting (yes/no)? yes
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
[Eric@vm2 ~]$
切換到dev分支,修改文件內容,並將新code提交到dev分支(Developer角色默認並沒有提交master的權限):
[Eric@vm2 chathall]$ git checkout dev
Branch dev set up to track remote branch dev from origin.
Switched to a new branch 'dev'
[Eric@vm2 chathall]$ ls
Readme.txt test.sh
[Eric@vm2 chathall]$ vim test.sh
[Eric@vm2 chathall]$ cat test.sh
#!/bin/bash
echo "gitlab test"
echo "brahch test"
[Eric@vm2 chathall]$ git add .
[Eric@vm2 chathall]$ git commit -m '201805101658'
[dev 6687039] 201805101658
1 file changed, 1 insertion(+)
[Eric@vm2 chathall]$ git push -u origin dev
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 306 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for dev, visit:
remote: http://192.168.60.119/plat-sp/chathall/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote:
To [email protected]:plat-sp/chathall.git
80edf6b..6687039 dev -> dev
Branch dev set up to track remote branch dev from origin.
[Eric@vm2 chathall]$
[Eric@vm2 chathall]$ git checkout master
Switched to branch 'master'
[Eric@vm2 chathall]$ git branch
dev

  • master
    [Eric@vm2 chathall]$
    使用Eric 用戶登錄gitlab web,在界面中 創建一個合併請求:

提×××並請求:

然後使用Tompson用戶登錄 gitlab web ,找到“合併請求” ,然後將dev分支合併到master分支,如下所示:

大部分公司的處理流程如下:
PM在gitlab創建任務,分配給開發人員
開發人員領取任務後,在本地使用git clone拉取代碼庫
開發人員創建開發分支(git checkout -b dev),並進行開發
開發人員完成之後,提交到本地倉庫(git commit )
開發人員在gitlab界面上申請分支合併請求(Merge request)
PM在gitlab上查看提交和代碼修改情況,確認無誤後,確認將開發人員的分支合併到主分支(master)
開發人員在gitlab上Mark done確認開發完成,並關閉issue。這一步在提×××並請求時可以通過描述中填寫"close #1"等字樣,可以直接關閉issue

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章