gitlab使用_gitlab搭建与使用

一、git、github、gitlab的区别

Git是版本控制系统,Github是在线的基于Git的代码托管服务。

GitHub是2008年由Ruby on Rails编写而成。GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开的代码仓库,只有付费账户可以创建私有的代码仓库。

Gitlab解决了这个问题, 可以在上面创建免费的私人repo。

二、gitlab server搭建过程

[root@vm1 ~]# yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python

//10.x以后开始依赖policycoreutils-python

[root@vm1 ~]# systemctl start postfix

[root@vm1 ~]# systemctl enable postfix

gitlab的下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

安装gitlab:

[root@vm1 ~]# rpm -ivh gitlab-ce-10.7.2-ce.0.el7.x86_64.rpm

warning: gitlab-ce-10.7.2-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY

Preparing... ################################# [100%]

Updating / installing...

1:gitlab-ce-10.7.2-ce.0.el7 ################################# [100%]

It looks like GitLab has not been configured yet; skipping the upgrade script.

*. *.

*** ***

***** *****

.****** *******

******** ********

,,,,,,,,,***********,,,,,,,,,

,,,,,,,,,,,*********,,,,,,,,,,,

.,,,,,,,,,,,*******,,,,,,,,,,,,

,,,,,,,,,*****,,,,,,,,,.

,,,,,,,****,,,,,,

.,,,***,,,,

,*,.

_______ __ __ __

/ ____(_) /_/ / ____ _/ /_

/ / __/ / __/ / / __ `/ __

/ /_/ / / /_/ /___/ /_/ / /_/ /

____/_/__/_____/__,_/_.___/

Thank you for installing GitLab!

GitLab was unable to detect a valid hostname for your instance.

Please configure a URL for your GitLab instance by setting `external_url`

configuration in /etc/gitlab/gitlab.rb file.

Then, you can start your GitLab instance by running the following command:

sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme

https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

[root@vm1 ~]#

gitlab的配置文件 /etc/gitlab/gitlab.rb, 编辑如下:

[root@vm1 ~]# vim /etc/gitlab/gitlab.rb

[root@vm1 ~]# grep "^external_url" /etc/gitlab/gitlab.rb

external_url 'http://192.168.60.119' 绑定监听的域名或IP(企业中最好是域名)

[root@vm1 ~]#

使用gitlab-ctl reconfigure 自动配置,并安装数据库,初始化信息,如下所示(第一次使用配置时间较长):

[root@vm1 ~]# gitlab-ctl reconfigure

.....

注: 第一次初始化后会产生当前gitlab的配置文件 /var/opt/gitlab/gitlab-rails/etc/gitlab.yml ,在后期维护的过程中尽量配置 /var/opt/gitlab/gitlab-rails/etc/gitlab.yml 文件,然后gitlab-ctl restart 即可生效新的配置;如果没有必要不建议做第二次初始化。

使用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

[root@vm1 ~]# grep -P "^[^#].*smtp_|user_email|gitlab_email" /etc/gitlab/gitlab.rb

gitlab_rails['gitlab_email_enabled'] = true

gitlab_rails['gitlab_email_from'] = 'username@domain.cn'

gitlab_rails['gitlab_email_display_name'] = 'Admin'

gitlab_rails['gitlab_email_reply_to'] = 'usernamei@domain.cn'

gitlab_rails['gitlab_email_subject_suffix'] = '[gitlab]'

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"

gitlab_rails['smtp_port'] = 25

gitlab_rails['smtp_user_name'] = "username@domain.cn"

gitlab_rails['smtp_password'] = "password"

gitlab_rails['smtp_domain'] = "domain.cn"

gitlab_rails['smtp_authentication'] = "login"

gitlab_rails['smtp_enable_starttls_auto'] = true

gitlab_rails['smtp_tls'] = false

user['git_user_email'] = "username@domain.cn"

[root@vm1 ~]# gitlab-ctl reconfigure

......

[root@vm1 ~]# gitlab-ctl stop

ok: down: gitaly: 0s, normally up

ok: down: gitlab-monitor: 1s, normally up

ok: down: gitlab-workhorse: 0s, normally up

ok: down: logrotate: 1s, normally up

ok: down: nginx: 0s, normally up

ok: down: node-exporter: 1s, normally up

ok: down: postgres-exporter: 0s, normally up

ok: down: postgresql: 0s, normally up

ok: down: prometheus: 0s, normally up

ok: down: redis: 0s, normally up

ok: down: redis-exporter: 1s, normally up

ok: down: sidekiq: 0s, normally up

ok: down: unicorn: 1s, normally up

[root@vm1 ~]# gitlab-ctl start

ok: run: gitaly: (pid 37603) 0s

ok: run: gitlab-monitor: (pid 37613) 0s

ok: run: gitlab-workhorse: (pid 37625) 0s

ok: run: logrotate: (pid 37631) 0s

ok: run: nginx: (pid 37639) 1s

ok: run: node-exporter: (pid 37644) 0s

ok: run: postgres-exporter: (pid 37648) 1s

ok: run: postgresql: (pid 37652) 0s

ok: run: prometheus: (pid 37660) 1s

ok: run: redis: (pid 37668) 0s

ok: run: redis-exporter: (pid 37746) 0s

ok: run: sidekiq: (pid 37750) 1s

ok: run: unicorn: (pid 37757) 0s

使用gitlab-rails console命令进行发送邮件测试,如下所示:

[root@vm1 ~]# gitlab-rails console

Loading production environment (Rails 4.2.10)

irb(main):001:0> Notify.test_email('user@destination.com', 'Message Subject', 'Message Body').deliver_now

Notify#test_email: processed outbound mail in 2219.5ms

Sent mail to user@destination.com (2469.5ms)

Date: Fri, 04 May 2018 15:50:10 +0800

From: Admin

Reply-To: Admin

To: user@destination.com

Message-ID: <5aec10b24cfaa_93933fee282db10c162d@vm1.mail>

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

Message Body

=> #<:message:70291731344240 multipart: false headers: fri may>, >, >, , >, , , , , , >

irb(main):002:0>quit

[root@vm1 ~]#

三、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 // 退出

19ef17d55f814536c4b605a7acf426a7.png

如果需要手工修改nginx的port ,可以在gitlab.rb中设置 nginx['listen_port'] = 8000 ,然后再次 gitlab-ctl reconfigure即可

登录gitlab 如下所示:

fef462f66abd83ed80f6020ef4d784d1.png

创建 group ,组名为plat-sp ,如下所示:

474d8076242430da595ffe9e4fa3dfdb.png
6da1e25efbe849e44094f5d96974a8c6.png

去掉用户的自动注册功能:

admin are -> settings -> Sign-up Restrictions 去掉钩钩,然后拉到最下面保存,重新登录

d42ea74253b8da8e02302ee178fae202.png

创建用户Tompson如下所示:

6ca10d6eebffc5ad5d98a790c391dee7.png

同样的方法,再创建Eric 、Hellen 用户。用户添加完毕后,gitlab会给用户发一封修改密码的邮件,各用户需要登录自己的邮箱,并点击相关的链接,设置新密码。

将用户添加到组中,并指定Tompson为本组的owner:

9cdf1a6deaf296849edc002ff3ceec0d.png

同样的方法将用户Eric、Hellen也添加到组中,并指定他们为Developer:

28fac1e8a1b7b0ea411a60765a7df47e.png

使用Tompson用户的身份与密码登录到gitlab界面中,并创建Project ,如下所示:

60968061fc86bafd7776a35dd6f9098c.png

指定项目的存储路径和项目名称,如下所示

d0b8a352447b949a3ef6b6a5587719e9.png
8422575497c8eab261c3464a0ae6f2a6.png

为项目创建Dev分支,如下所示:

7f6755ad5873f9681001c815ca7eb0e5.png
a0d9fed8df73e2d737acee73b5a2be68.png

在 client 上添加Tompson的用户:

[root@vm2 ~]# useradd Tompson

[root@vm2 ~]# useradd Eric

[root@vm2 ~]# useradd Hellen

[root@vm2 ~]# su - Tompson

[Tompson@vm2 ~]$ ssh-keygen -C Tompson@domain.cn

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 Tompson@domain.cn

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 Tompson@domain.cn

将Tompson的公钥复制到gitlab中: 使用Tompson用户的身份与密码登录到gitlab界面中,然后在ssh-key中添加 相关的key ,如下所示:

789647a5363462a1e58cdbe29a946bec.png
c3be97cf3c0c7bc2e28de7993eb882e5.png

为Tompson用户配置git ,如下所示:

[Tompson@vm2 ~]$ git config --global user.email "Tompson@domain.cn"

[Tompson@vm2 ~]$ git config --global user.name "Tompson"

[Tompson@vm2 ~]$ git clone git@192.168.60.119: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

Warning: Permanently added '192.168.60.119' (ECDSA) to the list of known hosts.

remote: Counting objects: 3, done.

remote: Total 3 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (3/3), done.

[Tompson@vm2 ~]$

[Tompson@vm2 ~]$ cd chathall/

[Tompson@vm2 chathall]$ ls

Readme.txt

[Tompson@vm2 chathall]$

创建一下新文件,添加内容,并提交到master分支:

[Tompson@vm2 chathall]$ vim test.sh

[Tompson@vm2 chathall]$ cat test.sh

#!/bin/bash

echo "gitlab test"

[Tompson@vm2 chathall]$ git add .

[Tompson@vm2 chathall]$ git commit -m '201805101649'

[master 80edf6b] 201805101649

1 file changed, 2 insertions(+)

create mode 100644 test.sh

[Tompson@vm2 chathall]$

[Tompson@vm2 chathall]$ git push -u origin master

Counting objects: 4, done.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 305 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To git@192.168.60.119:plat-sp/chathall.git

4611654..80edf6b master -> master

Branch master set up to track remote branch master from origin.

[Tompson@vm2 chathall]$

使用Eric用户登录,并clone 项目,如下所示:

[root@vm2 ~]# su - Eric

[Eric@vm2 ~]$ ssh-keygen -C Eric@domain.cn

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 Eric@domain.cn

The key's randomart image is:

+---[RSA 2048]----+

|*O=..B*o**+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/ Eric@domain.cn

[Eric@vm2 ~]$

同样需要使用Eric用户登录gitlab web 界面,并添加相应的ssh-key。然后设置git ,并clone项目:

[Eric@vm2 ~]$ git config --global user.email "Eric@domain.cn"

[Eric@vm2 ~]$ git config --global user.name "Eric"

[Eric@vm2 ~]$ git clone git@192.168.60.119: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 git@192.168.60.119: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,在界面中 创建一个合并请求:

a4bf30987f00e01742e98704b01ee77c.png

提×××并请求:

db12145a1aef774d55d4ea6aa365461f.png

然后使用Tompson用户登录 gitlab web ,找到“合并请求” ,然后将dev分支合并到master分支,如下所示:

6a5ee1cafe86860b983727df6d75ca87.png
21580266897c763be00c77e4e822d7f7.png

大部分公司的处理流程如下:

PM在gitlab创建任务,分配给开发人员

开发人员领取任务后,在本地使用git clone拉取代码库

开发人员创建开发分支(git checkout -b dev),并进行开发

开发人员完成之后,提交到本地仓库(git commit )

开发人员在gitlab界面上申请分支合并请求(Merge request)

PM在gitlab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支(master)

开发人员在gitlab上Mark done确认开发完成,并关闭issue。这一步在提×××并请求时可以通过描述中填写"close #1"等字样,可以直接关闭issue

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用Docker Compose搭建GitLab仓库的步骤: 1. 首先安装Docker和Docker Compose。 2. 创建一个目录,用于存放GitLab的配置文件和数据。 ``` mkdir -p /srv/gitlab/config mkdir -p /srv/gitlab/data mkdir -p /srv/gitlab/logs ``` 3. 创建docker-compose.yml文件,并加入以下内容: ```yaml version: '3' services: gitlab: image: gitlab/gitlab-ce:latest restart: always hostname: 'gitlab.example.com' # 根据实际情况修改 environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.example.com' # 根据实际情况修改 gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 根据实际情况修改 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.gmail.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "[email protected]" # 根据实际情况修改 gitlab_rails['smtp_password'] = "your_password" # 根据实际情况修改 gitlab_rails['smtp_domain'] = "smtp.gmail.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['backup_keep_time'] = 604800 gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" ports: - '80:80' - '443:443' - '2222:22' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab' ``` 注意修改`hostname`和`external_url`为实际的域名和URL。 4. 启动GitLab容器。 ``` docker-compose up -d ``` 这个命令会在后台启动GitLab容器,并把容器的日志输出到终端。 5. 等待GitLab容器启动完成,打开浏览器,访问`http://gitlab.example.com`,就可以看到GitLab的登录页面了。第一次登录需要设置管理员账号和密码。 6. 如果需要备份GitLab数据,可以使用以下命令: ``` docker exec -t gitlab gitlab-rake gitlab:backup:create ``` 这个命令会在GitLab容器内部执行备份操作,并把备份文件保存到`/var/opt/gitlab/backups`目录下。可以使用`docker cp`命令把备份文件拷贝到宿主机上。需要定期执行备份操作,以保证数据安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值