GitLab CI流水线配置文件.gitlab-ci.yml详解

… contents:: 目录

本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <configure_gitlab_i18n_and_create_gitlab_ci_with_gitlab_runner> 的基础上,对GitLab CI流水线配置文件 .gitlab-ci.yml 进行详细的介绍。

文章目录

  • GitLab CI流水线配置文件.gitlab-ci.yml详解
    • 1. 实验环境
    • 2. GitLab CI介绍
    • 3. ``.gitlab-ci.yml`` 配置参数
    • 4 参数详解
      • 4.1 [CI参数详解(一)](https://guoqiang.blog.csdn.net/article/details/119275083)
      • 4.2 [CI参数详解(二)](https://guoqiang.blog.csdn.net/article/details/119277983)

1. 实验环境

  • server服务端: 操作系统为CentOS 7.6,IP:192.168.56.14, git:2.16.5。

查看server服务端信息::

[root@server ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@server ~]# ip a show|grep 192
inet 192.168.56.14/24 brd 192.168.xxx.xxx scope global noprefixroute enp0s3
[root@server ~]# git --version
git version 2.16.5

GitLab用户信息::

账号            密码
root            1234567890
sunshine        1234567890

GitLab WEB网站地址: http://192.168.xxx.xxx

流水线执行的具体过程都是由 .gitlab-ci.yml 配置文件定义的,本文详细讲解 .gitlab-ci.yml 配置文件的使用。

2. GitLab CI介绍

  • GitLab提交持续集成服务,当你在项目根目录中添加 .gitlab-ci.yml 文件,并配置项目的运行器( GitLab Runner ),那么后续的每次提交都会触发CI流水线( pipeline )的执行。

  • .gitlab-ci.yml 文件告诉运行器需要做哪些事情,默认情况下,流水线有 buildtestdeploy 三个阶段,即 构建测试部署 ,未被使用的阶段将会被自动忽略。

  • 如果一切运行正常(没有非零返回值),您将获得与提交相关联的漂亮绿色复选标记。这样可以在查看代码之前轻松查看提交是否导致任何测试失败。

  • 大多数项目使用GitLab的CI服务来运行测试套件,以便开发人员在破坏某些内容时可以立即获得反馈。使用持续交付和持续部署将测试代码自动部署到模拟环境和生产环境的趋势越来越明显。

  • 由于将 .gitlab-ci.yml 文件存放在仓库中进行版本控制,使用单一的配置文件来控制流水线,具有读访问权限的每个人都可以查看内容,从而使其更有吸引力地改进和查看构建脚本。旧的版本也能构建成功,forks项目也容易使用CI,分支可以有不同的流水线和作业。

  • .gitlab-ci.yml 定义每个项目的流水线的结构和顺序,由以下两个因素决定:

  • GiTlab Runner运行器使用的执行器( executor ),执行器常用的 ShellDockerKubernets , 我们当前仅使用 Shell 执行器,后续再使用其他执行器。

  • 遇到进程成功或失败时等条件时做出的决定。

  • 可以在 查看到流水线的简单示例。

  • 可以在 GitLab CI/CD Examples <https://docs.gitlab.com/ce/ci/examples/README.html>_ 查看更多的流水线示例。

  • 在流水线脚本中可以使用预定义的全局变量,详细可查看

  • [企业级的 .gitlab-ci.yml 示例可查看]

  • Job作业是 .gitlab-ci.yml 文件的基本元素,每个作业至少有 script 子句,在流水线中可以定义任意多个作业。

  • 每个作业必须具有唯一的名称,但有一些保留的关键字不能用作作业名称,保留关键字( reserved keywords )有 imageservicesstagestypesbefore_scriptafter_scriptvariablescache

3. .gitlab-ci.yml 配置参数


关键字 描述
script 必须参数,运行器需要执行的脚本
image 使用Docker image镜像
services 使用Docker services镜像
before_script 作业执行前需要执行的命令
after_script 作业执行后需要执行的命令
stages 定义流水线所有的阶段
stage 定义作业所处流水线的阶段(默认test阶段)
only 限制作业在什么时候创建
except 限制作业在什么时候不创建
tags 作用使用的Runner运行器的标签列表
allow_failure 允许作业失败,失败的作业不影响提交的状态
when 什么时候运行作业
environment 作用部署的环境名称
cache 指定需要在job之间缓存的文件或目录
artifacts 归档文件列表,指定成功后应附加到job的文件和目录的列表
dependencies 当前作业依赖的其他作业,你可以使用依赖作业的归档文件
coverage 作业的代码覆盖率
retry 作业失败时,可以自动执行多少次
parallel 指定并行运行的作业实例
trigger 定义下游流水线的触发器
include 作业加载其他YAML文件
extends 控制实体从哪里继承
pages 上传GitLab Pages的结果
retry 作业失败时,可以自动执行多少次
variables 定义环境变量

4 参数详解

4.1 CI参数详解(一)

4.2 CI参数详解(二)

GitLab CI流水线配置文件.gitlab-ci.yml详解(三)相关推荐

  1. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...

  2. nginx配置文件及工作原理详解

    nginx配置文件及工作原理详解 1 nginx配置文件的结构 2 nginx工作原理 1 nginx配置文件的结构 1)以下是nginx配置文件默认的主要内容: #user nobody; #配置用 ...

  3. java 配置文件的路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...

  4. Redis配置文件redis.conf文件详解

    Redis配置文件redis.conf文件详解 唠嗑 这里面的意思只要看得差不多其实就是已经对redis有熟悉的感觉,就比如 推塔已经推到别人家的大门~~~~~~~~废话不多说直接开始了 知道大家都不 ...

  5. SSM框架整合:各种配置文件的整合和详解

    SSM框架整合:各种配置文件的整合和详解 前言 学习了ssm框架的整合之后,对于数量众多的配置文件,和各种不同的配置方式感到甚是头疼,接下来教给大家一个清晰明白的配置,分门别类的配置不同的xml文件. ...

  6. Windows 7防火墙设置详解(三)

    Windows 7防火墙设置详解(三) 一.如何禁用或启用规则 方法:只需要在需要禁用或启动的规则上,鼠标右键选择启用或禁止规则即可,或点击右侧的操作栏进行规则启用或禁止. 二.入站规则和出站规则 由 ...

  7. PackageManagerService启动详解(三)之开始初始化阶段流程分析

      PKMS启动详解(三)之BOOT_PROGRESS_PMS_START阶段流程分析 Android PackageManagerService系列博客目录: PKMS启动详解系列博客概要 PKMS ...

  8. Android init.rc文件解析过程详解(三)

    Android init.rc文件解析过程详解(三) 三.相关结构体 1.listnode listnode结构体用于建立双向链表,这种结构广泛用于kernel代码中, android源代码中定义了l ...

  9. linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

最新文章

  1. Editplus的扩展程序的删除
  2. SmartImageView框架的使用
  3. leetcode最大矩形_LeetCode——最大矩形
  4. java客户端发送token_基于token的会话保持机制
  5. [Core]-ARM CORE的发展历史
  6. des算法明文IP置换C语言编程,求助攻:C语言DES算法的实现程序有问题
  7. jqgrid ajax reload,jqgrid“reloadGrid”动作后将数据重新加载到文本框
  8. CF876 F 思维 枚举
  9. WeixinJSBridge API使用实例
  10. [开发语言]C#项目如何制作安装程序
  11. EMBER-网络安全恶意软件公开数据集,论文的翻译,自己的笔记
  12. 运营小技能:订阅号文章排版教程(添加图片超链接、推文采集、往期推荐)
  13. 腾讯云短信服务详细教程
  14. Windows 7操作系统
  15. 内网渗透之PTHPTTPTK(域控)
  16. html div设置有空隙,如何解决img标签下面的小空隙
  17. CSS+DIV布局中absolute和relative区别
  18. Python学习笔记——工欲善其事,必先利其器
  19. 作业3 跟踪分析Linux内核的启动过程
  20. Flutter基础Widget之按钮(RaisedButton、FlatButton、OutlineButton,IconButton)

热门文章

  1. linux ubuntu安装 mono,在Ubuntu 18.04系统中安装Mono及基本使用Mono的方法
  2. python自定义图标_Python-nautilus:添加自定义标志(叠加图标)
  3. 字符串去重、统计不同字符种类数问题
  4. document.getElementById与document.getElementsById的区别
  5. 深蓝学院的深度学习理论与实践课程:第五章
  6. 【模板】树链剖分 P3384
  7. 机器学习(2)特征提取1 -- 字典特征提取
  8. 机器学习—决策树构造算法的python实现
  9. LIO-SAM: 紧耦合的激光与惯导里程计方案
  10. 剑指offer:面试题18. 删除链表的节点