使用Gitlab CI 的好处
代码提交到 GitLab 了,一个 commit 直接触发 CI。
Gitlab CI 原理架构图
Gitlab CI.pngGitlab Runner
Runner一共有三种类型
- 本地Runner
- 普通的服务器上的Runner
- 基于Docker的Runner
Gitlab Runner 安装: https://docs.gitlab.com/runner/install/
注册Gitlab Runner
- 注册 GitLab CI 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
- 在Runner 中使用Docker 镜像来运行Integration-test
# 使用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
- 注册Gitlab runner with Docker
启动服务
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
网友评论