团队环境:版本管理系统GitLab安装
2017-05-09
版本控制系统是DevOps流程和持续交付流水线中关键的一环。 版本控制系统是研发团队开发环境的中心,开发人员和运维人员开发软件产品的代码、配置以及基础设施配置管理都要保存在其中。
我们选择在内网开发环境部署GitLab社区版作为团队的版本控制系统,一切皆代码,开发和运维人员将共同使用这个系统。
1.环境 #
- CentOS 7.3 192.168.61.100
- GitLab 9.1
2.安装GitLab CE #
使用GitLab官方提供的GitLab-CE Omnibus安装包:
1curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
2
3yum clean all
4yum make cachefast
5yum install gitlab-ce
3.初始化配置 #
在初始化和启动前根据服务器的具体情况做一些配置:
3.1 Git数据存储目录 #
配置Git数据存储目录,Git数据默认保存在/var/opt/gitlab/git-data
中,可修改/etc/gitlab/gitlab.rb
中的git_data_dir
修改到别的路径下,例如这里修改到/home/git-data下:
1mkdir -p /home/gitlab/git-data
修改/etc/gitlab/gitlab.rb
:
1git_data_dirs({ "default" => { "path" => "/home/gitlab/git-data" } })
3.2 配置外部访问URL #
/etc/gitlab/gitlab.rb
:
1external_url "http://gitlab.example.com"
最好以域名的形式配置,如果没有可以配置IP
3.3 初始化配置和启动 #
初始化配置和启动GitLab:
1gitlab-ctl reconfigure
在浏览器中访问:http://192.168.61.100,初次打开页面需要设置root用户密码,之后登录即可。
4.GitLab各组件 #
采用Omnibus package包并安装,GitLab各个组件全部自动安装完成。
我们主要关注以下组件:
- nginx: 静态Web服务器
- unicorn: GitLab应用服务器。
- gitlab-workhorse: 轻量级反向代理服务器,主要用来处理一些大的HTTP请求,例如文件上传下载,git push pull等。其他的HTTP请求会反向代理给unicorn。
- postgresql: 数据库
- redis: 缓存
- sidekiq:后台异步任务队列
对这些组件更多的定制配置可以参考这里 例如,数据库可以配置外部单独的PostgreSQL而不使用Omnibus GitLab包自带安装的。
5.服务的启动和停止 #
1# 启动
2gitlab-ctl start
3
4# 停止
5gitlab-ctl stop
6
7# 重启
8gitlab-ctl restart
备注:
- 可以使用
gitlab-rake gitlab:check
命令检查安装状态,有问题的地方可以根据提示修复 - 可以使用
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
查看安装的GitLab版本
6.gitlab常用配置 #
6.1 关闭注册 #
用管理员root账号登录之后, 进入Admin area
, 点settings
, 取消Signup enabled
.
6.2 禁止普通用户创建Group #
1gitlab_rails['gitlab_default_can_create_group'] = false
1gitlab-ctl reconfigure
6.3 通知邮箱配置 #
以163邮箱为例:
1gitlab_rails['smtp_enable'] = true
2gitlab_rails['smtp_address'] = "smtp.163.com"
3gitlab_rails['smtp_port'] = 25
4gitlab_rails['smtp_user_name'] = "[email protected]"
5gitlab_rails['smtp_password'] = "xxxpwd"
6gitlab_rails['smtp_domain'] = "163.com"
7gitlab_rails['smtp_authentication'] = "login"
8gitlab_rails['smtp_enable_starttls_auto'] = true
9gitlab_rails['gitlab_email_from'] = "[email protected]"
1gitlab-ctl reconfigure
测试邮件发送:
1gitlab-rails console
2irb(main):001:0> Notify.test_email('[email protected]', '[GITLAB]TEST', 'MSG').deliver_now
7.认证集成LDAP #
我们已经部署了一个OpenLDAP服务。 我们希望团队所有系统的账户都使用LDAP认证,使用统一帐户登录。
修改 /etc/gitlab/gitlab.rb
文件,搜索ldap
,去掉注释,并根据官方文档做出如下配置:
1gitlab_rails['ldap_enabled'] = true
2gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
3 main: # 'main' is the GitLab 'provider ID' of this LDAP server
4 label: 'LDAP'
5 host: '192.168.61.100'
6 port: 389
7 uid: 'uid'
8 method: 'plain' # "tls" or "ssl" or "plain"
9 bind_dn: 'cn=Manager,dc=frognew,dc=com'
10 password: '{SSHA}krOGXDmiCdSXuXocOf10F96LJO5ijdXo'
11 active_directory: true
12 allow_username_or_email_login: true
13 block_auto_created_users: false
14 base: 'dc=frognew,dc=com'
15 user_filter: ''
16 attributes:
17 username: ['uid', 'userid', 'sAMAccountName']
18 email: ['mail', 'email', 'userPrincipalName']
19 name: 'cn'
20 first_name: 'givenName'
21 last_name: 'sn'
22EOS
重新配置gitlab:
1gitlab-ctl reconfigure
开启LDAP登录后,可以在
Admin area
, 点settings
, 取消Signin enabled
关闭普通的账号密码登录。 另外需要注意在关闭普通的账号密码登录之前需要设置一个LDAP用户为超级管理员。
8.备份 #
使用gitlab-rake gitlab:backup:create
命令即可完成备份,默认的备份文件存放在/var/opt/gitlab/backups
下。
通过修改/etc/gitlab/gitlab.rb
来修改备份文件的默认存放目录:
1gitlab_rails['backup_path'] = '/homme/backup/gitlab'
重新配置gitlab:
1chown git /homme/backup/gitlab
2gitlab-ctl reconfigure
9.监控 #
以Omnibus GitLab package形式安装的gitlab默认开启了Prometheus监控和其所需的Exporter。 具体可以参考这里GitLab Prometheus。
可修改/etc/gitlab/gitlab.rb禁用gitlab内置的Prometheus:
1prometheus_monitoring['enable'] = false
1gitlab-ctl reconfigure