作者:微信小助手
发布时间:2020-08-16T19:30:28
欢迎关注公众号“码农架构”
专注于高可用、高性能、高并发类技术分享!
从0到1把gitlab-ci
弄好了, 彻底抛弃travis-ci
, 最大的坑还是墙外的东西太慢了, 总是timeout
gitlab-runner
, 并选择正确的
executor
gitlab-ci.yml
, 实现一个完整的前端后分离项目的构建部署
gitlab-runner
跟
gitlab-ci
是连体婴, 主要为
gitlab-ci
打工, 使用镜像的安装方式如下:
docker run -d --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
/srv/gitlab-runner/config/config.toml
包含了所有
runner
的配置信息.
/var/run/docker.sock:/var/run/docker.sock
,使得容器中的进程可以通过它与Docker守护进程通信
1.1 选择Docker作为runner的executor
在启动了gitlab-runner
容器后, 执行如下命令进入容器, 注册runner
docker exec -it gitlab-runner /bin/bash
root@492ce6ab72f9:/# gitlab-runner register
接下来需要填写的信息如下:
Please enter the gitlab-ci coordinator URL:
你的Gitlab地址: http(s)://gitlab.xxx.com
Please enter the gitlab-ci token for this runner:
你的Gitlab admin/runners页面中的token
Please enter the gitlab-ci description for this runner:
填写描述, 无关紧要
Please enter the gitlab-ci tags for this runner (comma separated):
填写标签, 没有标签谁都可以用, 是shared-runner, 有标签需要声明才可用, 回车就对了
Please enter the executor: docker-ssh, ssh, docker+machine, kubernetes, docker-ssh+machine, docker, parallels, shell, virtualbox:
选择你的executor: Docker应该是我观察到最常用的吧
Please enter the default Docker image (e.g. ruby:2.6):
选择一个默认镜像: 例如 docker:stable-alpine
不出意外, 就能在gitlab
中看到了
1.2 为什么使用docker作为executor
参考官方文档 - executor
shell executor
: 最简单的executor, 所有依赖都必须手动安装
不能保证每次构建都是相同的环境
不方便迁移
需要手动配置
Virtual Machine Executor
: 创建虚拟机用于构建, 如果你希望在不同的操作系统上构建, 可以选择它
占用资源大
调试构建问题困难
迁移较不方便
Docker Executor
: 最佳的选择QAQ
Docker Machine
: Docker的拓展, 工作方式与Docker类似, 不过需要额外的一些安装步骤
最后只尝试了Docker
和Docker + Machine
, 只是Docker + Machine
的runner
一直没有连接成功
参考官方文档 - dind
使用dind
的背景是: 需要在容器内执行docker命令,
在1.1
中注册好了一个docker executor
之后, 只需要完成两个操作, 即可使用
在gitlab-ci.yml
中添加:
imgage: docker:stable
service:
- docker:dind
# 测试
before_script:
- docker info
确保config.toml
中该runner
中设置了privileged = true
讲道理, 我没有在官方文档中找到: 当使用docker作为runner executor时, 如何设置registry-mirror
如果使用docker + machine
的话,