持续集成 gitlab-ci+arteryDocker

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

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

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

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

1.新的流程

持续集成 gitlab-ci+arteryDocker_第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+arteryDocker_第2张图片
.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文件替换。

持续集成 gitlab-ci+arteryDocker_第3张图片
Dockerfile
dzjz-entrypoint.sh

6. 遇到的问题

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

你可能感兴趣的:(持续集成 gitlab-ci+arteryDocker)