GitLab-CI 来自动建立 Docker 镜像

1.what is gitlab-ci docker imagegit

CI/CD 自动化集成,自动化部署。简单的说就是把代码提交到gitlab管理的同时部署到指定的server,打成docker image方便部署。部署的时候只须要将image run container即可以运行。docker

传统作法,代码commit 到gitlab后,login in server执行git pull同步新提交的代码。每次更新代码都须要作这样的操做,本人很懒不喜欢浪费不少时间作重复的事情,因此看到gitlab 8.x集成了ci决定尝试一下。服务器

 

2.CI env主要构成包括代码版本库 Gitlab,CI服务 Gitlab CI,CI运行器 GitLab Runner-docker。gitlab

 

3.持续集成相关概念测试

  1.pipeline  优化

    一次 Pipeline 其实至关于一次构建任务,里面能够包含多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程。
  任何提交或者 Merge Request 的合并均可以触发 Pipeline,以下图所示:code

+------------------+ +----------------+
| | trigger | |
| Commit / MR +---------->+ Pipeline |
| | | |
+------------------+ +----------------+

 

  2.stagesserver

    Stages 表示构建阶段,说白了就是上面提到的流程。
  咱们能够在一次 Pipeline 中定义多个 Stages,这些 Stages 会有如下特色:ip

  • 全部 Stages 会按照顺序运行,即当一个 Stage 完成后,下一个 Stage 才会开始
  • 只有当全部 Stages 完成后,该构建任务 (Pipeline) 才会成功
  • 若是任何一个 Stage 失败,那么后面的 Stages 不会执行,该构建任务 (Pipeline) 失败

  所以,Stages 和 Pipeline 的关系就是:ci

+--------------------------------------------------------+
| |
| Pipeline |
| |
| +-----------+ +------------+ +------------+ |
| | Stage 1 |---->| Stage 2 |----->| Stage 3 | |
| +-----------+ +------------+ +------------+ |
| |
+--------------------------------------------------------+

 

  3.jobs

  Jobs 表示构建工做,表示某个 Stage 里面执行的工做。
  咱们能够在 Stages 里面定义多个 Jobs,这些 Jobs 会有如下特色:

  • 相同 Stage 中的 Jobs 会并行执行
  • 相同 Stage 中的 Jobs 都执行成功时,该 Stage 才会成功
  • 若是任何一个 Job 失败,那么该 Stage 失败,即该构建任务 (Pipeline) 失败

  因此,Jobs 和 Stage 的关系图就是:

 

+------------------------------------------+
| |
| Stage 1 |
| |
| +---------+ +---------+ +---------+ |
| | Job 1 | | Job 2 | | Job 3 | |
| +---------+ +---------+ +---------+ |
| |
+------------------------------------------+

 

4.搭建过程当中的主要步骤:

  1. 在Gitlab上添加代码库(这个很少说了,不清楚的能够看个人git使用)
  2. 把代码库添加到Gitlab CI中(project中添加一个 .gitlab-ci.yml 文件,而后添加一个 Runner,便可进行持续集成)
  3. 安装docker(参见 Docker官方文档)
  4. 搭建基础 docker image
  5. 设置Gitlab Runner-docker
  6. 编写测试脚本
  7. 编写构建脚本
  8. 优化过程
  9. 完成一个简单够用的持续集成环境
相关文章
相关标签/搜索