gitlab–基础–5.2–CICD–术语


1、pipeline(管道、流水线)

  1. Pipeline就是流水线,里面包含自动部署的一些列阶段(Stage)
  2. 举例:我有一个自动部署的流水线,里面包含如下阶段
  1. 构建jar阶段
  2. 构建镜像阶段
  3. 推送镜像阶段

1.1、pipeline触发条件

  1. 任何提交
  2. Merge Request的合并

2、Stage(阶段)

  1. Stage表示构建阶段
  2. 每个pipeline都必须包含至少一个Stage

2.1、特点

  1. 所有Stage会按照顺序运行,即当一个 stage 完成后,下一个 Stage才会开始
  2. 只有当所有Stage成功完成后,该构建任务Pipeline才算成功
  1. 如果任何一个Stage失败,那么后面的Stage不会执行,该构建任务(Pipeline)失败

3、Jobs(任务)

  1. job表示构建任务,表示某个stage里面执行的工作任务
  2. 一个stage里面可以定义多个job
    jobs有如下特点 :

3.1、特点

  1. 相同stage中的jobs会并行执行
  2. 相同stage中的jobs都执行成功时,该stage才会成功
  1. 如果任何一个job 失败,那么该 stage 失败,即该构建任务(Pipeline)失败

3、Jobs(任务)

  1. job表示构建任务,表示某个stage里面执行的工作任务
  2. 一个stage里面可以定义多个job
  3. 默认情况
  1. GitLab Runner 会保存Job执行过程中产生的数据,然后在下一个Job执行之前(甚至不局限于当次CI/CD)将这些数据恢复。这样即便是不同的 Job 运行在不同的 Runner 上,它也能看到彼此生成的数据。
  1. before_script 会在所有 Job的script 执行前 调用
  2. after_script 会在所有 Job的script 执行后 调用

3.1、特点

  1. 相同stage中的jobs会并行执行
  2. 相同stage中的jobs都执行成功时,该stage才会成功
  1. 如果任何一个job 失败,那么该 stage 失败,即该构建任务(Pipeline)失败

3.2、举例

gitlab的javaApi分支比较方法 gitlab的pipeline_ci

  1. 这里有一个Pipeline,包含4个阶段,分别是
  1. Verify 阶段
  1. job:unit-test
  1. Build 阶段
  1. job:java-package
  1. Dockerpush 阶段
  1. job:docker-push
  1. Deploy 阶段
  1. job:service-1

4、Runner

  1. Runner就像一个个的工人,而Gitlab-CI就是这些工人的一个管理中心,所有工人都要在Gitlab-CI里面登记注册,并且表明自己是为哪个工程服务的。
  2. 当相应的工程发生变化时,Gitlab-CI就会通知相应的工人执行软件集成脚本。如下图所示:

gitlab的javaApi分支比较方法 gitlab的pipeline_java_02

4.1、Gitlab-Runner

  1. gitlab里面的runner叫Gitlab-Runner
  2. Gitlab-Runner是配合Gitlab-CI进行使用的。
  3. Gitlab-Runner是一个用来执行 Job中的script内容 的东西
  4. Gitlab-runner 需要独立部署

4.2、Runner类型

4.2.1、Shared Runner(共享型)

  1. 这种Runner(工人)是所有工程都能够用的。
  2. 只有系统管理员能够创建Shared Runner。

4.2.2、Specific Runner(指定型)

  1. 这种Runner(工人)只能为指定的工程服务。
  2. 拥有该工程访问权限的人都能够为该工程创建Shared Runner。

5、.gitlab-ci.yml 文件

  1. 被用来管理 runner 任务
  2. 作用
  1. 设置 statge顺序
  2. 设置 job应该如何触发和工作、执行什么脚本
  3. 设置 构建pipeline
  1. 存放于仓库的根目录
  2. 默认名:.gitlab-ci.yml

5.1、举例

# 定义pipeline流水线的各个执行阶段,从高到低,按顺序执行
stages:
  - verify
  - build
  - dockerpush
  - deploy

#单元测试
unit-test:
  # 属于哪个阶段
  stage: verify
  #  获取对应标签名称的Runners来运行jobs
  tags:
    # 标签名称
    - test-cicd 
  # 执行脚本
  script:
    - echo unit-test 

#java编译
java-package:
  stage: build
  tags:
    - test-cicd
  script:
    - echo build

#push镜像
docker-push:
  stage: dockerpush
  tags:
    - test-cicd
  script:
    - echo docker-push

#deploy
service-1:
  stage: deploy
  tags:
    - test-cicd
  script:
    - echo deploy
  1. 该配置对应下面的pipeline
  2. test-cicd是一个Specific Runner,执行脚本的类型是shell

gitlab的javaApi分支比较方法 gitlab的pipeline_ci_03

5.2、查看日志

点击unit-test这个job,可以看到里面的日志

gitlab的javaApi分支比较方法 gitlab的pipeline_gitlab_04