树莓派上用docker自建gitlab以及gitlab-runner环境
背景
为在自己搭建的环境下使用gitlab-ci,
因此需要gitlab与runner环境.
简介
gitlab-runner是一个开源项目.
可以运行gitlab-ci的任务并将结果返回gitlab.
gitlab可以让多台runner同时执行任务(比如一台专门构建,一台专门部署).
runner可以是一台具体的机器,也可以是虚拟机,也可以是docker.
如果自己只有一台电脑,既想自己电脑能当runner跑,又不想搞乱环境,可以使用docker来搭建.
gitlab也的确提供了gitlab-runner的docker.名为 gitlab/gitlab-runner
不过并不是arm平台的.偷懒一下,使用了 klud/gitlab-runner
尽管可以自行使用docker命令慢慢搭建,
但更好的方法是用docker-compose来搭建gitlab和gitlab-runner.
docker-compose问题
官方给出的安装脚本,最终拼凑出了一个不支持armv7平台的发行版,
导致二进制程序为空.
因此只有通过apt安装docker-compose.
环境搭建
找一合适位置,编写 docker-compose.yml
如下
1 | version: "3" |
然后使用命令启动即可
1 | docker-compose up -d |
大致等效的gitlab启动脚本
1 | docker run \ |
此处hostname需要注意
- 影响范围
- 项目界面中http和ssh协议的下载地址
- ssh连接时的host名
- docker内部网络中的host名
- 如果什么都不设置,在克隆项目时会发现给出的是随机字符串
- 除了设置hostname,还可以通过其他方式配置这些host
- 在gitlab的Web页面中配置http(s)下的hostname
- 在gitlab的配置文件中配置ssh方式下的hostname
gitlab初始配置
浏览器访问80端口就能看到首页.
设置完管理员密码后就进入控制面板.
然后就是正常的操作了.
runner注册
使用runner中的命令开始注册
1 | docker exec -it gitlab-runner-docker gitlab-runner register |
然后会问几个问题
- gitlab服务主页位置
官方:https://gitlab.com/
,
自建: 比如http://pilab/
由于存在容器间互相访问的网络,因此在gitlab-runner中写pilab能够找到gitlab-ce所在 - runner的token
在<gitlab-domain>/admin/runners
路径下可以拷贝这个token - 描述
随便写 - tags
之后CI过程中,配置文件会根据这个tags找到对应的runner,
可以写多个,逗号分隔 - executor类型
有多种选择,目前是用docker搭建而不是一台真正的机器,故填写docker - 如果executor填了docker,需要再次指定一个默认docker镜像
(runner执行任务时,必须指定一个在runner内部使用的docker,
当runner是真正的机器时没有太大技术问题,
但当runner本身是由docker构建时,则涉及docker in docker的问题,
官方给出了具有arm平台的docker:latest镜像)
当然在CI配置文件中手动指定也完全可以
确认结果
=docker ps -a
- 之前选好的路径下出现
config/config.toml
文件,里面含有刚才注册时使用的信息