给gitlab添加gitlab-ci和gitlab-runner 说明 使用的是gitlab v7.13.3 。失败时会发送邮件通知 
服务配置: 直接在配置文件gitlab.rb底部打开相关配置,即可使用。############################################
# Url on which GitLab CI will be reachable #
############################################
## see https://gitlab.com/gitlab-org/omnibus-gitlab/tree/629def0a7a26e7c2326566f0758d4a27857b52a3/doc/gitlab-ci/README.md
ci_external_url 'http://ci.gitlab.yourdomain.com'
#################################
# application.yml configuration #
#################################
# 这个app_id在gitlab中创建application后获得
gitlab_ci['gitlab_server'] = { "url" => 'http://gitlab.yourdomain.com', "app_id" => 'xxxxxxxxxxxx', "app_se
cret" => 'yyyyyyyyyyyyyyy' }
gitlab_ci['gitlab_ci_all_broken_builds'] = true
gitlab_ci['gitlab_ci_add_pusher'] = true
gitlab_ci['builds_directory'] = '/var/opt/gitlab/gitlab-ci/builds'
gitlab_ci['gravatar_enabled'] = false
# gitlab_ci['gravatar_plain_url'] = "http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=mm"
# gitlab_ci['gravatar_ssl_url'] =  "https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm"
## For setting up backups
## see https://gitlab.com/gitlab-org/omnibus-gitlab/blob/629def0a7a26e7c2326566f0758d4a27857b52a3/README.md#backups
gitlab_ci['backup_path'] = "/var/opt/gitlab/ci-backups"
# gitlab_ci['backup_keep_time'] = 604800
# gitlab_ci['backup_upload_connection'] = {
#   'provider' => 'AWS',
#   'region' => 'eu-west-1',
#   'aws_access_key_id' => 'AKIAKIAKI',
#   'aws_secret_access_key' => 'secret123'
# }
配置gitlab-runner PS:新版本gitlab-runner从ruby改为go语言实现,名字为gitlab-ci-multi-runner,软链接为gitlab-runnerRun gitlab-runner in a container docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  gitlab/gitlab-runner:latest
也可以用官方的另一个实现:gitlab/gitlab-runner    latest              3e8077 e209f5        13  hours ago        304.3  MB
gitlab/gitlab-runner    alpine              7 c431ac8f30f        13  hours ago        25.98  MB
注册runner docker exec -it gitlab-runner gitlab-runner register
Please enter the gitlab-ci  coordinator URL (e .g . https:
http:
Please enter the gitlab-ci  token  for  this runner:
# 这个token 在gitlab-ci 中Runners选项卡获得
e0ab42c98fff06b3dd4f3d4c776bc4
Please enter the gitlab-ci  description for  this runner:
[3366d1121148]: test -ci 
Please enter the gitlab-ci  tags for  this runner (comma separated):
delpoy
INFO[0086] e0ab42c9 Registering runner... succeeded                    
Please enter the executor: ssh, shell , parallels, docker, docker-ssh:
[]: shell 
INFO[0097] Runner registered successfully. Feel free to start it, but if  it's running already the config should be automatically reloaded!
注册成功后,查看生成的配置文件 
concurrent  = 1 
[[runners]]
  url  = "http://ci.gitlab.yourdomain.com/" 
  token  = "c87c7ad883af316b7d173c1094c6fe" 
  name  = "test-ci" 
  executor  = "shell" 
  [runners.ssh]
  [runners.docker]
    image  = "" 
    privileged  = false 
  [runners.parallels]
    base_name  = "" 
debug: docker logs -f gitlab-runnerdocker exec -it gitlab-runner gitlab-runner --help
使用gitlab-ci 打开http://ci.gitlab.yourdomain.com  ,会跳转到http://gitlab.yourdomain.com去做验证,然后跳回。 
#####.gitlab-ci.yml配置:git add . ; git commit -m 'test' ; git push注意:有坑!如果按照官方最新文档的话,会构建失败,因为句法有变化,可用下面这个链接在线验证配置文件。 在线编辑器 
下面是一个栗子
staging:
  type: deploy
  script:
  - echo 'deploy to test env' >> /tmp/test-ci.log
  - echo "CI:$CI CI_SERVER:$CI_SERVER CI_SERVER_NAME:$CI_SERVER_NAME GITLAB_CI:$GITLAB_CI CI_SERVER_VERSION:$CI_SERVER_VERSION CI_SERVER_REVISION:$CI_SERVER_REVISION CI_BUILD_REF:$CI_BUILD_REF CI_BUILD_BEFORE_SHA:$CI_BUILD_BEFORE_SHA  CI_BUILD_REF_NAME:$CI_BUILD_REF_NAME CI_BUILD_ID:$CI_BUILD_ID CI_BUILD_REPO:$CI_BUILD_REPO CI_PROJECT_DIR:$CI_PROJECT_DIR" >>/tmp/test-ci.log
#  only:
#  - master
production:
  type: deploy
  script:
  - echo 'deploy to production env'  >> /tmp/test-ci.log
  - echo "CI:$CI CI_SERVER:$CI_SERVER CI_SERVER_NAME:$CI_SERVER_NAME GITLAB_CI:$GITLAB_CI CI_SERVER_VERSION:$CI_SERVER_VERSION CI_SERVER_REVISION:$CI_SERVER_REVISION CI_BUILD_REF:$CI_BUILD_REF CI_BUILD_BEFORE_SHA:$CI_BUILD_BEFORE_SHA  CI_BUILD_REF_NAME:$CI_BUILD_REF_NAME CI_BUILD_ID:$CI_BUILD_ID CI_BUILD_REPO:$CI_BUILD_REPO CI_PROJECT_DIR:$CI_PROJECT_DIR" >>/tmp/test-ci.log
  only:
  - tags
  # except:
  #   - stable
  #   - /^deploy-.*$/
# cat /tmp/test-ci.log 
deploy to test env
CI:true  CI_SERVER :yes CI_SERVER_NAME :GitLab CI GITLAB_CI:true  CI_SERVER_VERSION : CI_SERVER_REVISION : CI_BUILD_REF :66 b8d99e51ff39e98629068bb5e9ef302288e899 CI_BUILD_BEFORE_SHA :b7c8b5d458375902426bb0777da3c0ddf553f308  CI_BUILD_REF_NAME :my-dev CI_BUILD_ID :9  CI_BUILD_REPO :http:
deploy to production env
CI:true  CI_SERVER :yes CI_SERVER_NAME :GitLab CI GITLAB_CI:true  CI_SERVER_VERSION : CI_SERVER_REVISION : CI_BUILD_REF :66 b8d99e51ff39e98629068bb5e9ef302288e899 CI_BUILD_BEFORE_SHA :b7c8b5d458375902426bb0777da3c0ddf553f308  CI_BUILD_REF_NAME :my-dev CI_BUILD_ID :10  CI_BUILD_REPO :http:
#####看到这些变量的输出,大家有思路该怎么玩了吗?
官方文档Configuration of your builds with .gitlab-ci.yml 官方说明 How your build script is run 
The runner runs the line below before it runs the commands in your build script:cd /gitlab-ci-runner/tmp/builds && git clone git@gitlab_server_fqdn:group/project.git project-1 && cd project-1 && git checkout masterBuild script example 
bundle install
bundle exec  rake db:create RAILS_ENV=test 
bundle exec  rake db:migrate RAILS_ENV=test 
script/run_all_tests
Environmental variables 
The runner sets the following environmental variables:CI=true 
CI_SERVER =true 
CI_SERVER_NAME =GitLab CI
GITLAB_CI=true 
CI_SERVER_VERSION 
CI_SERVER_REVISION 
CI_BUILD_REF 
CI_BUILD_BEFORE_SHA 
CI_BUILD_REF_NAME  (branch)
CI_BUILD_ID 
CI_BUILD_REPO 
CI_PROJECT_DIR