杂七杂八

用GitLab CI/CD进行持续集成

Spread the love

最近自己搭了一个gitlab服务器,希望之后自己写的东西可以不断积累,并且更快速地对自己做的东西进行迭代,而不需要进行一些反复工作。

所以看到了一些GitLab CI相关的东西。

视频网址:

https://www.youtube.com/watch?v=EuwLdbCu3DE

先先介绍了一些传统的CI

 

他们往往有单独的工具,和代码分离。

新一代的CI,和代码在一起,无需额外下载工具。 

首先,什么是CI

快速将代码的变化合入工程当中。

自动化是为了增强合入信心,保证合入之后不会阻塞其他人。

 

首先从一些简单任务开始:

  • 编译代码
  • 测试代码
  • 生成文档
  • 构建安装包

一些简单的任务

  • 发布到app store
  • 进行/更新Kubernetes部署
  • 发布库到一些库中心(NPM、Nuget、Maven之类的
  • 发布其他的app

现在要开始讲GitLab CI

  • 是GitLab的一部分,
  • 也可以在Github用
  • 使用YAML控制,所以也能进行版本控制
  • 使用Docker或者机器进行执行
  • 而且它是开源的

首先GitLab的CI是由Jobs以及Pipeline组成的

最简单的pipeline

Stages

将任务拆分成不同的Jobs,

不同的docker以及支持网状的pipeline

每个阶段都有多个Job

例子:

Artifacts

通常用来保存文件,比如我们要保存一些数据、截图、视频等

其使用价值有很多:

比如失败分析、出包部署、储存以及下载

一个例子

下面的例子还提到了依赖以及发布

当然你保存的文件也都是可以下载的

Dependency

依赖,之前有讲过,就是一个Job可以依赖另外的Job,组成网状的任务

可选择Branch以及Tag

在本地测试的时候尤为有用

一个例子

其中还用到了两个关键字

环境变量以及自定义变量

YAML中使用环境变量

还有一个比较重要的作用是秘钥管理。

我们可以在脚本里面用变量替代秘钥,保证秘钥不外泄

缓存

我们在跑pipeline的时候有很多库是恒定不变的,使用cache可以减少很多工作量

一个例子

服务

可以启动其他的docker用于辅助pipeline的运行

一个例子

Docker In Docker

Docker实例支持嵌套,让我们可以针对不同的任务进行更好的管理

模板

Gitlab中我们可以使用模板来定义一块代码以实现复用

以上例子主要是.build这部分代码的复用

上面是另外一种形式

Github Page

一个例子

Non-Linux/Docker Runner

我们可以不在Docker或者Linux上面跑,而直接在我们自己的机器上运行任务

环境

我们可以使用不同的环境来跑同一个任务,以达成不同的目的

下面是例子

Review应用

通过环境变量等功能,在动态环境部署你的应用,来review你的应用。

 

 

 

 

 
 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.