版本控制系统是DevOps流程和持续交付流水线中关键的一环。 版本控制系统是研发团队开发环境的中心,开发人员和运维人员开发软件产品的代码、配置以及基础设施配置管理都要保存在其中。
我们选择在内网开发环境部署GitLab社区版作为团队的版本控制系统,一切皆代码,开发和运维人员将共同使用这个系统。
1.环境
- CentOS 7.3 192.168.61.100
- GitLab 9.1
2.安装GitLab CE
使用GitLab官方提供的GitLab-CE Omnibus安装包:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum clean all
yum make cachefast
yum install gitlab-ce3.初始化配置
在初始化和启动前根据服务器的具体情况做一些配置:
3.1 Git数据存储目录
配置Git数据存储目录,Git数据默认保存在/var/opt/gitlab/git-data中,可修改/etc/gitlab/gitlab.rb中的git_data_dir修改到别的路径下,例如这里修改到/home/git-data下:
mkdir -p /home/gitlab/git-data修改/etc/gitlab/gitlab.rb:
git_data_dirs({ "default" => { "path" => "/home/gitlab/git-data" } })3.2 配置外部访问URL
/etc/gitlab/gitlab.rb:
external_url "http://gitlab.example.com"最好以域名的形式配置,如果没有可以配置IP
3.3 初始化配置和启动
初始化配置和启动GitLab:
gitlab-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.服务的启动和停止
# 启动
gitlab-ctl start
# 停止
gitlab-ctl stop
# 重启
gitlab-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
gitlab_rails['gitlab_default_can_create_group'] = falsegitlab-ctl reconfigure6.3 通知邮箱配置
以163邮箱为例:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "xxxpwd"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = "[email protected]"gitlab-ctl reconfigure测试邮件发送:
gitlab-rails console
irb(main):001:0> Notify.test_email('[email protected]', '[GITLAB]TEST', 'MSG').deliver_now7.认证集成LDAP
我们已经部署了一个OpenLDAP服务。 我们希望团队所有系统的账户都使用LDAP认证,使用统一帐户登录。
修改 /etc/gitlab/gitlab.rb文件,搜索ldap,去掉注释,并根据官方文档做出如下配置:
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: '192.168.61.100'
port: 389
uid: 'uid'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'cn=Manager,dc=frognew,dc=com'
password: '{SSHA}krOGXDmiCdSXuXocOf10F96LJO5ijdXo'
active_directory: true
allow_username_or_email_login: true
block_auto_created_users: false
base: 'dc=frognew,dc=com'
user_filter: ''
attributes:
username: ['uid', 'userid', 'sAMAccountName']
email: ['mail', 'email', 'userPrincipalName']
name: 'cn'
first_name: 'givenName'
last_name: 'sn'
EOS重新配置gitlab:
gitlab-ctl reconfigure开启LDAP登录后,可以在
Admin area, 点settings, 取消Signin enabled关闭普通的账号密码登录。 另外需要注意在关闭普通的账号密码登录之前需要设置一个LDAP用户为超级管理员。
8.备份
使用gitlab-rake gitlab:backup:create命令即可完成备份,默认的备份文件存放在/var/opt/gitlab/backups下。
通过修改/etc/gitlab/gitlab.rb来修改备份文件的默认存放目录:
gitlab_rails['backup_path'] = '/homme/backup/gitlab'重新配置gitlab:
chown git /homme/backup/gitlab
gitlab-ctl reconfigure9.监控
以Omnibus GitLab package形式安装的gitlab默认开启了Prometheus监控和其所需的Exporter。 具体可以参考这里GitLab Prometheus。
可修改/etc/gitlab/gitlab.rb禁用gitlab内置的Prometheus:
prometheus_monitoring['enable'] = falsegitlab-ctl reconfigure