omnibus-gitlab是gitlab 团队fork 自chef 的omnibus 项目,同时做了一些自定义的开发,omnibus-gitlab 简化了 
gitlab 的部署以及维护,同时里边集成了chef 组件(cookbooks 以及recipes)可以方便的进行用户机器上gitlab 
任务的配置。

组件架构

同时官方也提供了一个视频的介绍,我已经下载并上传百度云盘了gitlab-omnibus 

项目大概描述

主要简单说明组件的作用,以及在项目代码的位置

  • gitlab project 定义文件 
    这个主要是omnibus 项目架构的定义,包含了项目元数据定义,依赖关系,以及外部软件以及库 
    文件可以在 config/projects/gitlab.rb 找到
  • 独立的软件定义 
    这个也是omnibus 常规的玩法,独立的组件定义,包含了依赖以及组件的额构建方法(omnibus-gitlab,基本上都是源码构建的),同时 
    里面也包含了对于补丁的处理文件 
    软件定义在 config/software/ 目录 
    补丁文件config/patches 目录
  • 全局gitlab 配置模板 
    omnibus-gitlab 使用一个单一的配置文件进行gitlab 依赖组件的管理,而且具有约定的名称,格式如下: 
    <component>['<setting>'] = <value> 
    模板文件位置:files/gitlab-config-template/gitlab.rb.template
  • gitlab cookbooks 
    这个主要是chef 的一些定义,为了方便进行gitlab 各个组件的配置生成管理,大部分属于chef 的使用 
    Default Attributes位置:files/gitlab-cookbooks/gitlab/attributes/default.rb 
    Recipses 位置: files/gitlab-cookbooks/gitlab/recipes 
    Definitions 位置:files/gitlab-cookbooks/gitlab/definitions 
    各组件配置:files/gitlab-cookbooks/gitlab/templates
  • 通用库以及方法 
    omnibus-gitlab 也需要使用一个通用的帮助方法,所以进行了独立的包装,方便调用 
    位置:files/gitlab-cookbooks/gitlab/libraries
  • Runit 
    gitlab 使用runit 进行服务的管理,这是一个比较方便的服务管理工具 
    位置:/files/gitlab-cookbook/runit
  • Services 
    services 是runit 需要管理的一些服务的定义,对于这些服务,我们可以方便的使用gitalb-ctl 进行管理(status 、stop 
    、start) 
    文件位置:files/gitlab-cookbooks/package/libraries/config/services.rb
  • 额外的gitlab-ctl 命令配置 
    omnibus-gitlab 提供了一个方便的 gitlab-ctl 进行gitalb 组件服务的管理 
    文件位置: files/gitlab-ctl-commands

omnibus-gitlab 的工作生命周期

主要说明构建

  • 获取依赖软件的源码(解析版本,获取远程或者cache源码)
  • 构建每个独立的软件组件(设置环境变量,应用补丁,操作构建以及安装)
  • 生成关于各个组件的license 信息
  • 检查组件的license 信息,避免出现不兼容的问题
  • 运行一个健康检查,确定依赖的组件二进制文件是正确的
  • 根据/opt/gitlab 目录中的内容进行软件包的构建

说明

以上只是一个简单的说明,后边会进行详细的介绍

参考资料

https://github.com/gitlabhq/omnibus-gitlab/tree/master/doc/architecture

omnibus-gitlab 架构学习的更多相关文章

  1. 【从零开始学BPM,Day1】工作流管理平台架构学习

    [课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第一天课程] Step 1 软件下载:H3 BPM10.0全开 ...

  2. Mybatis架构学习

    Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...

  3. ABP架构学习系列一 整体项目结构及目录

    本系列是基于aspnetboilerplate-0.8.4.0版本写的,其中原因是由于较高的版本太抽象难以理解和分析,对于还菜菜的我要花更多的时间去学习. abp的源码分析学习主要来源于 HK Zha ...

  4. ABP架构学习系列

    ABP实践学习系列 ABP Zero 本地化语言的初始化和扩展 ABP Zero 导航菜单之角色权限 ABP Zero示例项目问题总结  ABP后台服务之作业调度Quartz.NET   ABP架构学 ...

  5. 1-4-bootloader架构学习

    1-4-bootloader架构学习 1.一般情况下嵌入式 Linux 系统中的软件主要分为以下几部分: 1) 引导加载程序:其中包括内部 ROM 中的固化启动代码和 BootLoader 两部分. ...

  6. Gitlab+Jenkins学习目录

    Gitlab+Jenkins基础篇 Gitlab+Jenkins学习之路(一)之Git基础 Gitlab+Jenkins学习之路(二)之gitlab部署 Gitlab+Jenkins学习之路(三)之g ...

  7. ZT Android4.2蓝牙基础架构学习

    Android4.2蓝牙基础架构学习 分类: Jellybean Bluetooth Bluetooth 2013-10-13 23:58 863人阅读 评论(3) 收藏 举报 androidblue ...

  8. MVP架构学习

    MVP架构学习 M:数据层(数据库,文件,网络等...) V:UI层(Activity,Fragment,View以及子类,Adapter以及子类) P:中介,关联UI层和数据层,因为V和M是相互看不 ...

  9. GitLab 架构

    GitLab 架构官方文档 GitLab 中文文档 版本 一般使用的是社区版(Community Edition,CE),此外还有企业版(Enterprise Edition,EE)可以使用. EE ...

随机推荐

  1. 对于Node中Express框架的中间件概念的感知

    中间件是什么呢? 中间件就是客户端http请求发起传送到服务器和服务器返回响应之间的一些处理函数. 为什么要使用中间件? 通过中间件,可以对数据进行操作使得我们能方便地操作请求数据编写服务器响应.如b ...

  2. C# vb .net实现移除像素特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的移除像素特效呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  3. C ProcessAsUser

    class Interop { public static void CreateProcess(string app, string path) { bool result; IntPtr hTok ...

  4. [Linux学习--用户管理]centos中添加一个新用户,并授权

    前言 有时候给root用户不太方便,新建一个用于并赋予权限这个做法相对好些 创建新用户 创建一个用户名为:cmj [root@localhost ~]# adduser cmj 为这个用户初始化密码, ...

  5. layui 框架 table插件 实现键盘快捷键 切换单元格编辑

    最近使用layui的框架时,发现table插件不支持键盘快捷键切换单元格,花了点时间实现此功能. 分享给有需要的朋友们~~~ 效果图 代码: 1.支持 enter,上,下,右键 切换单元格,支持隐藏列 ...

  6. 通过request获取服务器相对路径及绝对路径

    一. String scheme = request.getScheme();//http String serverName = request.getServerName();//localhos ...

  7. RocketMQ在CentOS7上安装

    需要先以下组件 1.64bit OS, Linux/Unix/Mac is recommended;2.64bit JDK 1.8+; 安装了 Java JDK 就可以运行 RocketMQ 了 3. ...

  8. MySQL用户与权限

    用户连接到mysql,并做各种查询,在用户和服务器中间分为两个阶段: 1:用户是否有权连接上来 2:用户是否有权执行此操作(如select,update等等) 先看第一个阶段:服务器如何判断用户是否有 ...

  9. Ubuntu安装Gitlab Runner

    第一步: 添加GitLab的官方存储库:    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runne ...

  10. NGINX并发量优化

    NGINX并发量优化 一.压力测试 命令:ab -c 2000 -n 2000 web服务器的地址 ab:压力测试工具 -c:client缩写,客户端的数量 -n:总的访问量,所有客户端总共的访问量. ...