2018-10-17

在那不遥远的地方_d449 · · 675 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、背景

最近接手一个 golang 的项目,存储于 gitlab 上,由于之前主要是 PHP 开发,版本库用得比较多的也是 SVN,此次的项目想要使用 Gitlab 自带的 CI 持续集成工具进行自动编译打包部署,之前从未接触过此类东西,故在网上苦苦寻觅,浏览了无数资料,踩了无数的坑,现将主要过程以及一些坑整理分享出来,方便即将入坑的朋友。

参考文献:

二、相关解释

1. Gitlab

GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。
它拥有与 GitHub 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

2. Gitlab-CI

Gitlab-CI是GitLab Continuous Integration(Gitlab持续集成)的简称。
从Gitlab的8.0版本开始,gitlab就全面集成了Gitlab-CI,并且对所有项目默认开启。
只要在项目仓库的根目录添加.gitlab-ci.yml文件,并且配置了Runner(运行器),那么每一次合并请求(MR)或者push都会触发CI pipeline

3. Gitlab-runner

Gitlab-runner 是 .gitlab-ci.yml 脚本的运行器,Gitlab-runner 是基于 Gitlab-CI 的 API 进行构建的相互隔离的机器(或虚拟机)。GitLab Runner 不需要和 Gitlab 安装在同一台机器上,但是考虑到 GitLab Runner 的资源消耗问题和安全问题,也不建议这两者安装在同一台机器上。
Gitlab Runner 分为两种,Shared runners 和 Specific runners。
Specific runners 只能被指定的项目使用,Shared runners 则可以运行所有开启 Allow shared runners 选项的项目。

4. Pipelines

Pipelines 是定义于 .gitlab-ci.yml 中的不同阶段的不同任务。
我把Pipelines 理解为流水线,流水线包含有多个阶段(stages),每个阶段包含有一个或多个工序(jobs),比如先购料、组装、测试、包装再上线销售,每一次push或者MR都要经过流水线之后才可以合格出厂。而 .gitlab-ci.yml 正是定义了这条流水线有哪些阶段,每个阶段要做什么事。

5. Badges

徽章,当 Pipelines 执行完成,会生成徽章,你可以将这些徽章加入到你的 README.md 文件或者你的网站。

三、安装 Gitlab-runner

1. 第一步就是在机器上安装 Gitlab-runner

这里我们使用 清华大学开源软件镜像站 的资源来进行安装,先选择下载到对应版本的 rpm 安装包并执行安装

wget "https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7/gitlab-runner-11.1.0-1.x86_64.rpm"
rpm -ivh gitlab-runner-11.1.0-1.x86_64.rpm

由于 gitlab 版本关系,需安装对应的 gitlab-runner 版本,版本不支持可能导致网络不通、通讯失败等一堆问题
注意:gitlab-runner 分为 gitlab-ci-multi-runner 以及 gitlab-runner 两个发行库, gitlab-ci-multi-runner 目前已停止维护,最后的版本为9.5.0,改为 gitlab-runner 继续更新,现网上大部分教程都是使用 gitlab-ci-multi-runner 请注意区分。
使用参考: gitlab 11.0.5 gitlab-runner 11.0

2. runner 注册

安装完成后 我们使用 gitlab-runner regist 来进行 runner 注册

gitlab-runner regist register

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
**此处输入你的 gitlab  **
Please enter the gitlab-ci token for this runner
**刚才的token**
Please enter the gitlab-ci description for this runner
**起名**
INFO[0034]() XXXX Registering runner... succeeded
Please enter the executor: shell, docker, docker-ssh, ssh?
**shell**
INFO[0037]() Runner registered successfully. Feel free to start it, but if it's
running already the config should be automatically reloaded!

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:在那不遥远的地方_d449

查看原文:2018-10-17

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

675 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传