Gitlab作为目前最常用,最完善的用于仓库管理系统的开源项目,很早就在家里的NAS自建了。但是基础功能使用久了,不免对其中五花八门的其他功能感到好奇,尤其是每次弹出的CI/CD功能。最近手头项目不多,正好有时间来尝试一下。
什么是CI/CD
查看Gitlab项目设置界面中CI/CD子页面,可以看到另一个更接地气的描述:流水线,在查询官网的wiki后发现这其实就是在我们每次提交代码后,以类似于流水线的方式执行一系列的脚本操作,来实现自动编译,自动测试,自动部署等功能。如果你使用过Apple Homekit,那很容易就会联想到其中“自动化”功能。但是与之相对应的,我们这些流水线启动需要一个”开关“,而在Gitlab中,这个”开关“就来自于每次推送代码。简单地说,CI/CD就是每次推送代码时,执行一系列的脚本操作,来实现自动编译,自动测试,自动部署等功能的服务。
CI/CD怎么实现的
首先,作为一个上位机软件工程师,我很识趣的知道,搭建Gitlab的Linux系统是无论如何无法编译可以运行在windows上的可执行文件的,但是CI/CD提供了一个看起来很取巧的方式:Linux没法实现的环境,那我找一个windows来执行就行了。实际上Gitlab将这类子系统统称为Runner,Gitlab将编译任务分发到Runner,Runner执行完后将产物上传回Gitlab。Runner可以是全平台的,于是CI/CD便可以编译所有平台的代码,甚至可以通过连接多个不同平台的Runner,来实现一些跨平台代码的同时编译。
另一个问题是Gitlab怎么知道项目怎么去编译,怎么去测试,怎么去部署,需要在流水线中插入执行特殊操作的时候怎么告知Gitlab的呢,答案是使用CI/CD 配置文件,默认文件名是.gitlab-ci.yml。当项目启动CI/CD功能的时候,每次提交代码,便会在根目录找CI/CD 配置文件,然后根据CI/CD配置文件的内容,执行响应操作。
具体操作
首先,我们要在项目中创建Runner,切换到项目设置页面,找到CI/CD子页面中Runner设置

在新建Runner的页面需要设置Runner的预设平台,对于不同的平台,Gitlab将会在下一步中提供不同的Runner注册方式,并创建用于区分不同任务的Tag,Tag用于匹配项目提交时所提交的Tag,Gitlab将会匹配对应Tag的Runner来执行操作,此次教程我们先将运行无Tag的提交选项给勾着,这样所有的提交都可以使用这个Runner

点击创建Runner后,会弹出对应系统的注册过程,在另一台作为Runner的机器上跟着流程一步步操作即可

在成功注册Runner后,便可以在Runner页面查看到在线的Runner,点击Runner名称可以看到Runner对应信息


此时需要配置流水线配置文件,对应语法可以参考
