DevOps是Development和Operations的组合,是一种方法论,是一组过程、方法与系统的统称,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合。以期打破传统开发和运营之间的壁垒和鸿沟。Git更是现在日常开发必不可少的代码管理工具。本文主要介绍使用GitLab 来做项目CI/CD。


Gitlab CI/CD 简介

传统的 CI/CD:搭建一个 Jenkins,在 Jenkins 配置好基本的环境,如 Java, Maven, Git 等等,接着开始配置任务,项目 A 的代码在哪里?怎么 Build?项目 B 的代码在哪里?怎么 Build?触发周期是多少?细节挺多的,通常需要专门的管理员去维护这个 Jenkins。

Travis CI/CD 颠覆了这种模式,在 Travis CI 的模式中,开发在源码根目录下放置 CI 的配置(通常是一个 yml 文件,描述了基本的 build 命令),Travis 会解析这个文件然后执行具体的 CI 任务。

GitLab CI/CD 实际上就是照搬了 Travis CI 的模式,它只需要开发者在自己需要 CI 的代码库中放一个 .gitlab-ci.yml 文件即可完成自己的CI任务配置

使用Gitlab CI/CD 的好处

代码提交到 GitLab 了,git push 之后直接触发 CI/CD。

使用 Gitlab CI/CD

GitLab CI/CD 运行示意图如下所示:

  1. 编写GitLab CI/CD 配置文件**.gitlab-ci.yml**。 代码开放完之后push 到GitLab服务器
  2. GitLab 会检测到代码变动,根据**.gitlab-ci.yml**的配置分发任务到GitLab Runner 来执行CI/CD任务

下面分别简单介绍**.gitlab-ci.yml** 编写,以及GitLab Runner安装与运行

GitLab CI/CD Pipeline Configuration: .gitlab-ci.yml

.gitlab-ci.yml主要描述了CI/CD任务的执行顺序,主要包括以下两个方面:

  1. 使用GitLab Runner执行什么?
  2. 条件分支控制,如:当某个流程失败或成功时应该干啥

.gitlab-ci.yml 概览

一个 .gitlab-ci.yml 主要由default、variables、stages、 jobs 构成,示例如下: