持续集成 gitlab-ci+arteryDocker

最近学习了下docker ,听了一次卷宗团队王凯同学关于gitlab-ci的分享,加上公司有arterydocker这个平台。所以决定尝试配置一套自动集成部署。

下面的内容主要分为几个部分:

1. 新的流程
2. 关于gitlab-ci介绍
3. docker的简单介绍
4. arteryDocker简单介绍
5. gitlab-ci +arteryDocker具体配置
6. 遇到的问题

如果只是需要了解,请看1,2,3。 如果需要具体尝试 请看剩下几条。

1.新的流程

新流程

当前由于arteryDocker平台不支持命令启动更新部署应用 所以 暂时只能支持到 每次提交自动生成镜像 并且自动推送到arteryDocker仓库,需手动点击平台上应用的重新部署按钮,从而完成部署。arteryDocker平台在7月底版本应该会支持远程调用重新部署启动应用。到时可实现全部自动化。

2.关于gitlab-ci介绍

gitlab-ci介绍

3.docker的简单介绍

docker简单介绍

推荐书籍:
docker --从入门到实践

4.arteryDocker简单介绍

借ADC上关于arteryDocker的介绍

ArteryDocker平台是以docker为底层核心开发的一套集部署、管理、调度、运维于一体的系统,它实现了传统的项目与docker进行完美结合。

优势:

• 封装
    应用发布包包含了所有所需要的环境
• 高效
    容器技术比虚拟机更加轻量,资源开销少,利用率高
• 智能
    应用占用资源在允许的范围内按需占用,系统能够及时有效统治警告,错误信息
• 安全
    所有应用与外界网络隔离,任何端口都需要进行路由的端口映射

我理解的arteryDocker平台是将docker很多功能做到可视化,并且增加一些命令的封装,将用户的操作尽可能的简单化。

详细介绍请见

5. gitlab-ci +arteryDocker具体配置

本文基于 centos7 gitlab 8.8.5 gitlab-ci-runner 1.11.2 docker 17.05.0
流程如下
1. 配置runner服务器环境(包含runner,maven,jdk,docker)
2. 书写dockerfile
3. 配置gitlab-ci.yml
4. arteryDocker平台使用
一、 配置runner服务器环境(包含runner,maven,jdk,docker)

  1. 安装maven,安装jdk (命令网上一大堆)
  2. 安装 runner

gitlab-ci介绍

  1. 安装docker (注意与runner在一台服务器上安装)
    docker --从入门到实践中centos安装docker章节。
    安装后 记得 启动docker 服务
    service docker start
    还有记得把gitlab-runner这个用户 加入docker组中 否则 docker-runner执行脚本 关于操作docker会报无权限。具体操作见第一个问题解决方案

4 . 整体流程

每次合并后,gitlab-ci找到指定runner 执行 .gitlab-ci.yml,gitlab-ci.yml见下图

.gitlab-ci.yml

runner 调用maven去打包,将打好的war包和项目中写好的dockerfile放入同一目录,然后将调用docker命令生成镜像,推送到artery平台,跟arteryDocker了解后,7月底的版本 arteryDocker会支持远程调用更换应用镜像、重新部署。

5 . 注意
① . runner执行命令时使用的是gitlab-runner这个用户执行的,一个是需要将该用户加入docker的group,否则执行命令报没有权限,第二个是需要将maven 本地repository的所有者改为gitlab-runner,不这样mvn操作时会报一堆不让删除等等的错误。
② . 关于dockerfile的书写 要注意dockerfiel文件名大小写的问题
③. 关于config中的配置 如果没有使用配置服务,或者获取时候没有从环境变量中获取,则要将config.properties放入数据卷中,启动时通过ENTRYPOINT将config文件替换。

Dockerfile
dzjz-entrypoint.sh

6. 遇到的问题

http://www.jianshu.com/p/941a0a034e4d

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 123,411评论 18 134
  • 作为程序员,代码是一定要写的,而且要天天写。在好多地方见过这样一种说法: 只会写程序的程序员不是好程序员 当然,我...
    cjzhao阅读 15,765评论 19 89
  • 本文以Gitlab来讲解Git使用以及持续集成, 持续集成采用的是Gitlab CI. 其他代码托管网站,如Git...
    x1596357阅读 4,448评论 0 5
  • 咸亭小筑, 望春波湖水, 意语断桥。 归来或问, 风有零落谁? 一远长山, 西京犹望, 君知当归否...
    半空风清阅读 77评论 4 2
  • 时光飞逝,不知不觉,16天过去了,我在赤兴乡政府的实习期也到今天结束了。 没有了初来乍到时的忐忑与好奇,却添了许多...
    诗绥阅读 63评论 0 0
  • “妈妈妈妈,这是什么?”儿子一身脏兮兮的跑过来,手里拿着张小纸条。 我知道,他一定又跑到储物间去玩无所谓的寻宝游戏...
    芜劣阅读 97评论 0 0
  • 说好的漫漫暑假着什么急,过着过着就结束了。
    可可羊群阅读 81评论 0 1