微服务架构

Gitlab CI 简介

2017-01-07  本文已影响693人  DongGuangqing

使用Gitlab CI 的好处

代码提交到 GitLab 了,一个 commit 直接触发 CI。

Gitlab CI 原理架构图

Gitlab CI.png

Gitlab Runner

Runner一共有三种类型

  1. 本地Runner
  2. 普通的服务器上的Runner
  3. 基于Docker的Runner

Gitlab Runner 安装: https://docs.gitlab.com/runner/install/

注册Gitlab Runner

## 下载并安装 Runner
$ sudo wget -O /usr/local/bin/gitlab-ci-multi-runner http://ruby-china.oss-cn-hangzhou.aliyuncs.com/gitlab-ci-multi-runner-linux-amd64
$ sudo chmod +x /usr/local/bin/gitlab-ci-multi-runner

## 为 Runner 创建 linux 用户
$ sudo /usr/sbin/useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

## 注册 Runner(需要填写必要的 Gitlab 地址和 token)
$ sudo gitlab-ci-multi-runner register

## 启动 Runner 
$ sudo gitlab-ci-multi-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
$ export PATH=$PATH:/sbin
$ sudo gitlab-ci-multi-runner start
#  使用Docker 来运行Integration-test: https://docs.gitlab.com/ce/ci/docker/using_docker_images.html
# The registered runner will use the ruby:2.1 docker image and will run two services, postgres:latest and mysql:latest, both of which will be accessible during the build process.
gitlab-ci-multi-runner register \
  --url "https://gitlab.com/" \
  --registration-token "PROJECT_REGISTRATION_TOKEN" \
  --description "docker-ruby-2.1" \
  --executor "docker" \
  --docker-image ruby:2.1 \
  --docker-postgres latest \
  --docker-mysql latest
docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  gitlab/gitlab-runner:latest

注册

docker exec -it gitlab-runner gitlab-runner register

查看Gitlab Runner

在每个 GitLab Project 的 Settings -> Runners 可以看到Runners 信息

runner.png

开启Gitlab CI

传统的 CI:搭建一个 Jenkins,在 Jenkins 配置好基本的环境,如 Java, Maven, Git 等等,接着开始配置任务,项目 A 的代码在哪里?怎么 Build?项目 B 的代码在哪里?怎么 Build?触发周期是多少?细节挺多的,通常需要专门的管理员去维护这个 Jenkins。

Travis CI 颠覆了这种模式,在 Travis CI 的模式中,开发在源码根目录下放置 CI 的配置(通常是一个 yml 文件,描述了基本的 build 命令),Travis 会解析这个文件然后执行具体的 CI 任务。

GitLab CI 实际上就是照搬了 Travis CI 的模式,它要求开发在自己需要 CI 的代码库中放一个 .gitlab-ci.yml 文件,内容如下:

# 使用Runner 普通的Executor
stages:
  - build
  - test

job1:
  stage: build
  script: "mvn -U -DskipTests clean package "

job2:
  stage: test
  script: "mvn -U clean package"
# 使用Runner 的Docker Executor
image: ruby:2.1
services:
  - postgres

before_script:
  - bundle install

after_script:
  - rm secrets

stages:
  - build
  - test
  - deploy

job1:
  stage: build
  script:
    - execute-script-for-job1
  only:
    - master
  tags:   #tags is used to select specific Runners from the list of all Runners that are allowed to run this project.
    - docker

.gitlab-ci.yml 详细配置可以见 https://docs.gitlab.com/ce/ci/yaml/README.html
.gitlab-ci.yml脚本验证:点击Lint,进行脚本验证,参考资料http://docs.gitlab.com/ee/ci/yaml/README.html

上一篇 下一篇

猜你喜欢

热点阅读