centos7下完整配置gitlab及gitlab-ci docker测试
March 08, 2016
gitlab下载
由于直接从官方渠道下载会遭遇被墙的情况,因此,先更换成中国镜像,再进行下载安装
安装完成后运行下面命令,配置gitlab
gitlab-ctl reconfigure
gitlab服务
开启gitlab服务
gitlab-ctl start
停止gitlab服务
gitlab-ctl stop
重启gitlab服务
gitlab-ctl restart
开启rails控制台
gitlab-rails console
配置gitlab服务
首先需要修改gitlab的external_url,external_url是gitlab默认仓库的host地址,我们需要将其改成外网可以访问的地址,如ip
vim /etc/gitlab/gitlab.rb
external_url 'http://121.201.63.89'
接着,我们需要配置一下smtp服务器,同样在gitlab.rb
# 配置smtp服务器信息
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxuser@163.com"
gitlab_rails['smtp_password'] = "xxpassword"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
# 配置发送人信息
gitlab_rails['gitlab_email_from'] = "xxuser@163.com"
user["git_user_email"] = "xxuser@163.com"
gitlab读取最新更改配置
gitlab-ctl reconfigure
配置gitlab-ci
添加.gitlab-ci.yml 到项目下
配置gitlab-ci runner
gitlab-ci runner是负责运行ci测试的服务, runner可以执行多个项目的ci测试
首先需要先安装gitlab-ci runner
runner 有许多种形式,这里我们使用了docker的形式运行,使用docker运行有几点好处,一是不用再runner环境下配置ruby运行需要的所有依赖库,降低了配置的难度,同时也避免了由于操作系统,源等差异带来的版本冲突问题
note
如果遇到
```
ERROR: Build failed with: Get http://unix.sock/v1.18/version: dial unix /var/run/docker.sock: no such file or directory
这是因为没有把docker.sock挂载到容器里,导致无法拉取镜像
这时,run gitlab-runner容器时,需要指定挂载docker.sock
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
#### 配置.gitlab-ci.yml
```yaml
# 主镜像
image: docker.baozou.com/baozou/dashijian:base
services:
# 依赖的镜像
- mysql:latest
# 环境变量
variables:
# Configure mysql environment variables (https://hub.docker.com/_/mysql/)
MYSQL_DATABASE: action_cabel
MYSQL_ROOT_PASSWORD: '63292590'
test:
script:
# 拉取子模块
- git submodule update --init
# 在gitlab docker runner中/cache是会被挂在容器外面的地方,将bundle下来的gem包安装在这个地方,能避免test每次bundle的时候都重新拉下完整的gem
- bundle install --path=/cache
- RAILS_ENV=test DB_HOST=mysql DB_NAME=action_cable bundle exec rake db:drop
- RAILS_ENV=test DB_HOST=mysql DB_NAME=action_cable bundle exec rake db:create
- RAILS_ENV=test DB_HOST=mysql DB_NAME=action_cable bundle exec rake db:migrate
- RAILS_ENV=test DB_HOST=mysql DB_NAME=action_cable bundle exec rake test
tags:
- docker-test