gitlab CI/CD 学习部署
最近部门的开发环境由SVN迁移到了GIT,平台是gitlab,gitlab的功能挺强大的,之前对其自动化略有所耳闻,因此就打算配置一下
gitlab CI/CD 学习部署
CI/CD 能实现什么? 自动化流程简析
CI:Continuous Integration
CD:Continuous Deployment
每当有人推送到gitlab的远程仓库时,gitlab会进行检测,当符合设定的条件时,就会触发流水线,gitlab就会自动触发配置好的任务流,比如博客的部署托管部署,本地写好对应的文档,推送到仓库中,runner就可以自动执行打包脚本,打完包之后部署到对应的服务器上,这样只要你写完blog的文字内容,推送到远端,过一会就可以看到博客页面有最新的文章出现。
目前从最基础的应用开始
将其结合到我目前工作项目中,就是能够自动的在我们开发环境ORACLE库中打一遍这次提交的sql脚本,检查其中是否有错误。如有错误,就抛出问题,前端就会显示流水线失败,从而达到提醒的目的,减少开发缺陷。

安装、注册runner
要想实现上面所说的功能,首先服务器上要安装gitlab-runner,gitlab官方给出了对应的安装文档,里面可以选择通过apt/yum在线安装。或者是通过下载符合机器架构的二进制包离线安装,文档中的安装内容很详细,这边就不再具体说明。
安装完之后执行service gitlab-runner status
应该能够看到对应的服务
下面提注册runner的过程,注册runner官方也有文档,这边列图说明下
注册gitlab runner需要用到仓库的CI/CD token,token可以在 设置——CI/CD——Runner 找到(该页面只有仓库管理员才能看到)


1 | [root@server-1 gitlab-runner]# gitlab-runner register #若无权限可以用sudo 提权 |
上面的内容填写完毕之后,就可以在刚才的页面中看到对应的runner出现在了gitlab CI/CD 管理页面中
tag设置
正常情况下,每个job 都需要配置tags,但我们这边配置不需要,因此设置了允许执行没有打tag的任务(勾选如下框即可)

.gitlab-ci.yml 配置
gitlab检测仓库中的该文件,若没有该文件,则不会触发流水线
一个比较简单的配置如下
1 | stages: # 阶段,一个任务可分不同的stage |
较为完整的配置可以查阅官方文档
runner会将仓库pull到所在服务器,然后执行script中的脚本, 初始目录位置为仓库的根目录。
这样下来基本上就能实现,git仓库检测到推送事件,然后触发对应的任务流了。