博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Docker快速搭建Gitlab与Gitlab CI/CD服务
阅读量:6971 次
发布时间:2019-06-27

本文共 2719 字,大约阅读时间需要 9 分钟。

基于Docker快速搭建Gitlab与Gitlab CI/CD服务

此文档基于现有项目运行实践整理,其中包含了许多Gitlab、CI/CD相关概念,阅读需要有一定的Gitlab、Docker、CI/CD基础知识。

更多参考:

此项目能做什么

  1. 分享一些关于团队Git版本控制使用心得。
  2. 提供一份Docker版本的Gtilab私有化仓库应用实现,让你在开发团队内部快速构建一套Git托管仓库系统。
  3. 提供一份Gitlab Docker容器编排实现参考,分离Gitlab/Redis/PostgreSQL/Gitlab-CI和运行时数据。
  4. 提供一份Gitlab Runner Docker版本实现,在Runner容器内部增加了对PHP的支持,利用实现远程操作多台主机,实现分布式自动构建与交付。
  5. 加深对软件从编码 =》 构建 =》 测试 =》 部署的整个生命周期的认知,
  6. 为Web/Web API类型互联网产品自动化提供参考,适合中小型创业研发团队快速迭代版本。

Git Flow / Github Flow /Gitlab Flow Git工作流

Git团队开发中,大家都在向仓库中提交功能代码,时间久了,分支与版本就逐渐增多而变得复杂,因此,一个合理的版本管理流程在项目初期就非常重要。

使用Git,多数时候推荐流行的git-flow工作流程 。通常,develop分支作为测试版本使用,所有开发者都能够向该分支合并代码,以保证代码经过评审和功能验证。master分支作为线上版本使用,只有仓库管理员才能向该分支合并代码,以确保线上版本稳定。

  • feature branches 功能特性分支,基于develop分支开发,在功能开发完成后,代码会被合并到develop分支,此分支也自动删除。
  • develop 测试分支,一般基于该分支构建应用的测试环境。
  • release branches 发布分支。新功能开发完成,经过了代码评审和功能验证后,仓库管理员使用git flow release start 1.0.0 命令方式合并develop分支到master分支。使用该命令,需要确保master分支与develop分支基础版本一致。
  • hotfixes 修复分支,一般而言,在线上环境出现问题,需要紧急修复时,需创建hotfix修复补丁分支,它基于master分支开发,补丁修复代码会被合并至master与develop分支。
  • master 生产分支,一般基于该分支中构建应用的生产环境。

在单人Git开发场景下,此流程足以满足需求,但是在多人的开发团队中,有时候稍显"",而Gitlab/Github推荐使用PR/MR的方式,开发者需要主动发起分支合并申请,在得到确认后,分支开发才算完成。

开发者基于主干分支先创建新的功能性分支,在功能开发完成后,需要作Merge Request申请,也即是主动请求合并功能分支代码到主干分支。仓库管理员会评审每一次MR,只有评审通过,新功能才被提交上线。

快速运行Gitlab

Gitlab提供社区与企业版本,提供多种Gitlab安装方式。此项目是基于Docker版本的Gitlab实现,开发者无需更多关心Gitlab安装过程,Docker镜像已做好了环境和依赖,只需要一台*Unix机器,并安装Docker,可以放心安装和卸载。

该项目基于 镜像构建,它将Gitlab/PostgreSQL/Redis容器进行了分离,更友好的理解其运行依赖,组织结构等内容,提供一套容器编排配置参考,支持Docker Compose快速构建与维护。

运行以下命令,确保你的主机已经安装好了Docker与Docke-Compose。

  1. 克隆仓库

    $ git clone https://github.com/bravist/gitlab-docker$ cd ~/gitlab-docker复制代码
  2. 配置环境变量,推荐使用默认配置

    $ cp .env.example .env复制代码
  3. 使用docker-compose 自动构建镜像和启动容器

    $ docker-compose build && docker-compose up -d复制代码
  4. 查看容器并访问Gitlab Web控制台

    CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                                                   NAMES8827363f45d8        sameersbn/gitlab:10.3.3           "/sbin/entrypoint.sh…"   4 seconds ago       Up 4 seconds        443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp   gitlabdocker_gitlab_1db0dd3b3d23f        bravist/gitlab-ci-php-envoy:1.0   "/usr/bin/dumb-init …"   7 seconds ago       Up 6 seconds                                                                gitlab-ci-php-envoy-runnerf598844c561c        sameersbn/redis:latest            "/sbin/entrypoint.sh…"   7 seconds ago       Up 6 seconds        6379/tcp                                                gitlab-redis73d93b7cd110        sameersbn/postgresql:9.6-2        "/sbin/entrypoint.sh"    7 seconds ago       Up 5 seconds        0.0.0.0:5432->5432/tcp                                  gitlab-postgresql复制代码

更多参考:

转载地址:http://ysdsl.baihongyu.com/

你可能感兴趣的文章
iOS注册collcetionViewFlowLayout
查看>>
python-selenium 元素定位
查看>>
windows下python的安装
查看>>
解决数据库卡、慢,问题多,难管理——老技术的执著
查看>>
ios学习视频比较
查看>>
mysqlbinlog读取二进制日志文件时,报错 (转)
查看>>
html5 css练习,弹性三栏布局
查看>>
游戏AI之模糊逻辑(4)
查看>>
day 06-02 元组(tuple)
查看>>
微软老将Philip Su的离职信:回首12年职场生涯的心得和随笔[转]
查看>>
day1 python 入门
查看>>
github上传文件
查看>>
jquery的on()函数
查看>>
回复我的Bug图
查看>>
HighSchool
查看>>
删除空格-sed
查看>>
Word怎么删除空白行汇总——摘自百度知道
查看>>
数据结构及算法基础--基本排序(elementary sort)(一)选择排序(selection sort)、插入排序(insertion sort)和希尔排序(shell sort)...
查看>>
在Windows和Linux上安装paramiko模块
查看>>
python 程序结构
查看>>