gitlab-ci之理论知识入门

227 阅读3分钟

一、为什么选择Gitlab CI/CD?

如今市面上的 CI/CD 工具有很多,如 JenkinsCircleCIBamboo 等,而本文将讲选取 Gitlab CI/CD 进行讲述。

其中原因有下:

  • 大部分开发团队都会选择内部搭建 Gitalb 作为代码仓库,而 Gitlab CI/CD 内置在 Gitlab 中,不需要额外安装。
  • Gitlab CI/CD 的功能丰富,足以应对大部分devops场景。
  • 其中流水线的功能,概念简单,开发者上手门槛低。

二、Gitlab-ci相关的概念

在使用 Gitlab CI/CD 之前,我们需要先了解一些常见的概念,这可以帮我们更容易理解整个 Gitlab CI/CD 运行流程。

2.1 Pipelines流水线: 通过管道结构化 CI/CD 流程。

Gitlab 把在项目中触发的一系列 CI/CD 任务合称流水线。 通常开发者会把 CI/CD 中的任务按逻辑划分为诸如构建,测试,部署等。而这些任务会按顺序一个接着一个执行,如同工业流水线一般。

2.2 Jobs 列表 :可以呈现所有的ci任务

2.3 Schedule pipelines 定时执行一些CI任务(不怎么常用,一般是指定分支固定时间跑构建、测试 Job)

2.4 Runner : 配置您自己的调度者来执行您的脚本。

如下配置本地runner,远程runner配置不在本教程:

  • 第一步:终端输入如下指令
gitlab-runner register
  • 第二步:输入第一步指令会有如下第1张图提示,根据提示输入gitlab的服务URL

获取url在自己项目CICD里展开runner,里面有url和token

  • 第三步:输入第二步指令后,会有如下提示输入gitlab-ci的Toekn 获取token在自己项目CICD里展开runner,里面有url和token

  • 第四步:输入完第三步的信息后,会提示输入本机电脑的在gitlab-ci上的描述

这里直接回车的话就是默认是你当前电脑登录的用户名

  • 第五步:输入完第四步会提示输入tag值,如下第1张图给这个gitlab-runner输入一个标记,这个tag非常重要,这个tag来指定pipeline中的job使用那个gitlab-runner执行,比如我的输入xcode_12

  • 第六步:提示输入该runner可选维护说明:

这里随便输入即可

第七步:设置runner的运行时方式

这里因为我们是本地电脑,选择shell即可

回车会提示成功,如下图:

三、gitlab-ci工作流如何工作?

To use GitLab CI/CD, you need:

  • Application code hosted in a Git repository. 应用代码必须在gitlab仓库
  • A file called .gitlab-ci.yml in the root of your repository, which contains the CI/CD configuration. 项目根目录下必须建一个.gitlab-ci.yml的文件,用于CI/CD配置

通过官方的解释就是gitlab-ci需要识别.gitlab-ci.yml配置文件去实现CI/CD工作流

3.1 .gitlab-ci.yml

3.1.1 .gitlab-ci 可以做那些事?

  • The scripts you want to run. 可以运行你想运行的脚本
  • Other configuration files and templates you want to include. 包含你想包含的文件或者模版(一般用不上)
  • Dependencies and caches. 依赖并且缓存数据(一般用不上)
  • The commands you want to run in sequence and those you want to run in parallel. 串行或者并行执行一些job
  • The location to deploy your application to. 将应用程序部署到指定位置
  • Whether you want to run the scripts automatically or trigger any of them manually. 可以设置自动或者手动触发某一个脚本

3.1.2 简单的.gitlab-ci文件配置

#配置需要加载那些CIjob

stages:

  - build

  - test



#job 1

build-code-job1: #job描述

  stage: build  #job名字

  script:

    - echo "Check the ruby version, then build some Ruby project files:"

    - ruby -v

    - rake

  rules:

    - if: 条件语句(某种情况才可以出发该job)

    

 

#job 2

build-code-job2: #job描述

  stage: test  #job名字

  script:

    - ./run.sh #当前目录下某一个脚本

  rules:

    - if: 条件语句(某种情况才可以出发该job)  

执行顺序 :job1 -> job2 按组执行可以参考docs.gitlab.com/ee/ci/jobs/

gitlab-ci复杂的配置可以参考:docs.gitlab.com/ee/ci/yaml/…

四、参考地址:

gitlab-ci教程:docs.gitlab.com/ee/ci/quick…

gitlab-ci默认环境变量:Predefined variables reference | GitLab

.gitlab-ci.yml文件如何配置: docs.gitlab.com/ee/ci/yaml/…