持续集成(Continuous integration)
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
参考文档:
CI、CD相关概念
GitLab CI Runner
什么是 Runner
参考文档:
GitLab Runners
Runner 类型
GitLab-Runner 可以分类两种类型:Shared Runner(共享型)和 Specific Runner(指定型)。
Shared Runner:这种 Runner 是所有工程都能够用的。只有系统管理员能够创建 Shared Runner。
Specific Runner:这种 Runner 只能为指定的工程服务。拥有该工程访问权限的人都能够为该工程创建 Shared Runner。
Runner 安装
Docker 下 Runner 安装:
- 拉取gitlab-runner镜像
docker pull gitlab/gitlab-runner:latest
- 添加gitlab-runner container
docker run -d --add-host git.ct-ec:106.37.233.68 --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
runner注册信息将保存在 /srv/gitlab-runner/config 下 config.toml 文件内,示例:
[[runners]]
name = “*****”
url = “http://gitlab-url/”
token = “****”
executor = “docker”
[runners.docker]
tls_verify = false
image = “docker”
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
如果需要在 executor 内执行 docker 命令需要修改配置文件,参考官方文档 三种配置方法,此处使用第三种方法:
volumes = ["/var/run/docker.sock:/var/run/docker.sock", “/cache”]
如果 runner 运行后报错 gitlab 域名无法解析
需要配置:
extra_hosts = [“gitlab-url:ip”]
注意:配置文件修改后需重启 runner 服务
- 注册runner
docker exec -it gitlab-runner gitlab-ci-multi-runner register
注册过程同下,步骤2 - 7
注册完成后到项目下查看启动的Runner
Runner 注册
Runner 需要注册认证才能连接到 GitLab CI 服务上。
- 运行以下命令:
sudo gitlab-runner register
- 输入 GitLab 服务的 URL:
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com
- 输入GitLab CI 的 token:
Please enter the gitlab-ci token for this runner
xxx
- 输入对该 Runner 的描述(随意,可在 GitLab 修改):
Please enter the gitlab-ci description for this runner
[hostame] my-runner
- 输入与该 Runner 的 tag (随意,可在 GitLab 修改):
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag
- 输入 Runner executor:
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
- 如果是用 Docker 作为 executor ,需要指定.gitlab-ci.yml执行环境的image:
Please enter the Docker image (eg. ruby:2.1):
docker
说明:
第2、3步所需的 URL 和 token 如果是 Specific Runner 在 gitlab 服务项目下Settings -> CI/CD -> Runners settings 下,如果是 Shared Runner 则需要 gitlab 服务的 root 用户提供