omnibus-gitlab 架构学习
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 架构学习的更多相关文章
- 【从零开始学BPM,Day1】工作流管理平台架构学习
[课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第一天课程] Step 1 软件下载:H3 BPM10.0全开 ...
- Mybatis架构学习
Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...
- ABP架构学习系列一 整体项目结构及目录
本系列是基于aspnetboilerplate-0.8.4.0版本写的,其中原因是由于较高的版本太抽象难以理解和分析,对于还菜菜的我要花更多的时间去学习. abp的源码分析学习主要来源于 HK Zha ...
- ABP架构学习系列
ABP实践学习系列 ABP Zero 本地化语言的初始化和扩展 ABP Zero 导航菜单之角色权限 ABP Zero示例项目问题总结 ABP后台服务之作业调度Quartz.NET ABP架构学 ...
- 1-4-bootloader架构学习
1-4-bootloader架构学习 1.一般情况下嵌入式 Linux 系统中的软件主要分为以下几部分: 1) 引导加载程序:其中包括内部 ROM 中的固化启动代码和 BootLoader 两部分. ...
- Gitlab+Jenkins学习目录
Gitlab+Jenkins基础篇 Gitlab+Jenkins学习之路(一)之Git基础 Gitlab+Jenkins学习之路(二)之gitlab部署 Gitlab+Jenkins学习之路(三)之g ...
- ZT Android4.2蓝牙基础架构学习
Android4.2蓝牙基础架构学习 分类: Jellybean Bluetooth Bluetooth 2013-10-13 23:58 863人阅读 评论(3) 收藏 举报 androidblue ...
- MVP架构学习
MVP架构学习 M:数据层(数据库,文件,网络等...) V:UI层(Activity,Fragment,View以及子类,Adapter以及子类) P:中介,关联UI层和数据层,因为V和M是相互看不 ...
- GitLab 架构
GitLab 架构官方文档 GitLab 中文文档 版本 一般使用的是社区版(Community Edition,CE),此外还有企业版(Enterprise Edition,EE)可以使用. EE ...
随机推荐
- SVN客户端教程
.SVN是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改,Subversion允许把数据恢复到早期版本,或是检查数据修改的历史,Subversion可以通过网络访问 ...
- git学习笔记 ---添加远程库
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举 ...
- -Gradle 翻译 Merge AndroidManifest 合并清单文件 MD
目录 目录 Merge AndroidManifest 合并清单文件 合并多个清单文件 合并优先级 合并冲突启发式算法 合并规则的标记 节点标记 属性标记 Attribute markers 标记选择 ...
- 基于hystrix的线程池隔离
hystrix进行资源隔离,其实是提供了一个抽象,叫做command,就是说,你如果要把对某一个依赖服务的所有调用请求,全部隔离在同一份资源池内 对这个依赖服务的所有调用请求,全部走这个资源池内的资源 ...
- Spring Boot 优雅的配置拦截器方式
https://my.oschina.net/bianxin/blog/2876640 https://cs.xieyonghui.com/java/55.html 其实spring boot拦截器的 ...
- 七牛云图床存储+Alfread工作流+使用QSHELL
layout: post title: 七牛云图床存储+Alfread工作流+使用QSHELL 来源:http://www.cnblogs.com/cmi-sh-love/p/8901620.html ...
- 解决Ajax前台中文传到后台出现中文乱码
遇到的问题是: 前台利用Ajax, get方式向后台发送中文数据出现乱码. 解决办法是前台两次编码, 后台一次解码即可. 前台jsp文件 1 var text = "张三"; 3 ...
- leetcode 学习心得 (3)
源代码地址:https://github.com/hopebo/hopelee 语言:C++ 517. Super Washing Machines You have n super washing ...
- 一行Python代码画心型
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yanlaifan/article/deta ...
- 大数据量高并发的数据库优化,sql查询优化
一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. ...