Blog
Blog copied to clipboard
GitLab持续集成
GitLab持续集成
标签(空格分隔): GitLab-CI GitLab-CE Docker
GitLab 使用Runner来跟CE通讯,通过调用API的方法跟CE交互。获取项目的最新更新,运行.gitlab-ci.yml
里面的命令,来达到编译,单元测试,自动部署等目的,并将结果返回给GitLab-CE。
这里使用Docker来创建Runner的容器。
使用Docker创建Runner的容器 参考:官方文档
注意:
- 官方文档里面启动容器的命令不能照抄,首先得知道
docker run -v
里面-v
的功能。是把Host的目录映射到容器里面去。而对于OS X,Host指的是Virtual Box 创建的VM。而每次重新启动VM的时候,保存在里面的数据会丢掉(我自己做实验确认过的)。如果原封不动的按照官网操作,Runner注册时生成的数据不会保存,重启机器以后注册过的Runner直接就失联了。- 解决办法:
OS X 下启动VM的时候默认会把用户的
/Users
目录共享到VM里面,在创建容器 的时候直接把-v
后面的目录写到/Users/xxx/gitlab
就好了。(可能需要先手动建立目录)。
- 解决办法:
OS X 下启动VM的时候默认会把用户的
- runner注册的效果实际上就是把注册时输入的选择,根据网页上的Token生成一个新的Token写入
/etc/gitlab-runner/
下的config.toml
里面(执行用户不同,可能存储的位置不同,详情)。所以上面的问题其实就是配置文件持久化的问题。 - 我这里是使用Docker作为executor的,Runner需要读取到
/var/run/docker.sock
来操作Docker。在OS X里面,还是由于有一层VM,这个文件不在OS X主机里面,而在VM里面,要操作到这个文件,需要执行docker-machine ssh default
连接到VM里面进行docker操作,而不能使用Docker Quickstart Terminal。