本人搭建的效果如下:
GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。.gitlab-ci.yml的脚本解析就由它来负责。那么在gitlab上在哪里设置呢?
打开gitlab网站:
项目-->Setting-->CI/CD-->Runner-->Expand,如下图:
点击Expand后如下:
GitLab-Runner
GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地(服务器)并执行预定义好的执行脚本。
所以,GitLab-Runner就是一个用来执行软件集成脚本的东西。你可以想象一下:Runner就像一个个的工人,而GitLab-CI就是这些工人的一个管理中心,所有工人都要在GitLab-CI里面登记注册,并且表明自己是为哪个工程服务的。当相应的工程发生变化时,GitLab-CI就会通知相应的工人执行软件集成脚本。如下图:
Runner可以分布在不同的主机上,同一个主机上也可以有多个Runner。
当我们注册完Runner以后就可以通过.gitlab.ci文件去支配runner代替我们执行docker镜像打包,docker镜像推送,k8s项目管理,执行sh脚本.......等等
总之runner可以帮你在你注册的这台服务器上执行你想执行的操作
Runner类型
GitLab-Runner可以分类两种类型:Shared Runner(共享型)和Specific Runner(指定型)。
Shared Runner:这种Runner(工人)是所有工程都能够用的。只有系统管理员能够创建Shared Runner,这种Runner通常用来团队写作使用的。
Specific Runner:这种Runner(工人)只能为指定的工程服务。拥有该工程访问权限的人都能够为该工程创建Shared Runner。
.gitlab-ci.yml
记录了一系列的阶段和执行规则。GitLab-CI在push后会解析它,根据里面的内容调用runner来运行。
安装步骤
$ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
$ sudo apt-get install gitlab-runner
只需要以上两条命令就可以装好gitlab-runner了
gitlab-runner安装好以后我们注册一下就好了
$ gitlab-ci-multi-runner register
引导会让你输入gitlab的url,输入自己的url,例如http://gitlab.example.com/
引导会让你输入token,去相应的项目下找到token,例如ase12c235qazd32
引导会让你输入tag,一个项目可能有多个runner,是根据tag来区别runner的,输入若干个就好了,比如web,hook,deploy\#引导会让你输入executor,这个是要用什么方式来执行脚本,图方便输入shell就好了。
最后两个引导直接Enter 完事
当你注册号以后刷新页面就可以看到你刚刚注册的runner了
编写.gitlab-ci.yml
在项目根目录下编写.gitlab-ci.yml push之后,gitlab-ci就会自动识别来解析了。
以下是我编写的CI触发流程
以下是我编写的CI文件
可以发现我的CI文件中出现了$REGISTRY_USERNAME $REGISTRY_PASSWORD 这两个 变量,但是文件中并没有看到定义
如上图,我们可以在gitlab的页面中定义我们需要的环境变量,即可在我们的CI文件中读取
CI文件编写完成,push到你对应的项目中,即可看到效果了
至此,本次CI CD的分享到此结束,有问题大家可以在下面评论,
初出茅庐,大神勿喷,谢谢
runner权限问题可以参考 :https://www.jianshu.com/p/0b339821c80b