alwaystest / Blog

24 stars 2 forks source link

GitLab持续集成 #15

Open alwaystest opened 8 years ago

alwaystest commented 8 years ago

GitLab持续集成

标签(空格分隔): GitLab-CI GitLab-CE Docker


GitLab 使用Runner来跟CE通讯,通过调用API的方法跟CE交互。获取项目的最新更新,运行.gitlab-ci.yml里面的命令,来达到编译,单元测试,自动部署等目的,并将结果返回给GitLab-CE。

这里使用Docker来创建Runner的容器。

使用Docker创建Runner的容器 参考:官方文档

注意:

  1. 官方文档里面启动容器的命令不能照抄,首先得知道 docker run -v 里面 -v的功能。是把Host的目录映射到容器里面去。而对于OS X,Host指的是Virtual Box 创建的VM。而每次重新启动VM的时候,保存在里面的数据会丢掉(我自己做实验确认过的)。如果原封不动的按照官网操作,Runner注册时生成的数据不会保存,重启机器以后注册过的Runner直接就失联了。
    • 解决办法: OS X 下启动VM的时候默认会把用户的/Users目录共享到VM里面,在创建容器 的时候直接把-v后面的目录写到/Users/xxx/gitlab就好了。(可能需要先手动建立目录)。
  2. runner注册的效果实际上就是把注册时输入的选择,根据网页上的Token生成一个新的Token写入/etc/gitlab-runner/下的config.toml里面(执行用户不同,可能存储的位置不同,详情)。所以上面的问题其实就是配置文件持久化的问题。
  3. 我这里是使用Docker作为executor的,Runner需要读取到/var/run/docker.sock来操作Docker。在OS X里面,还是由于有一层VM,这个文件不在OS X主机里面,而在VM里面,要操作到这个文件,需要执行docker-machine ssh default连接到VM里面进行docker操作,而不能使用Docker Quickstart Terminal

参考

  1. 利用docker搭建gitlab及持续集成模块
  2. Configuration of your builds with .gitlab-ci.yml