Gitlab-cicd简单实践

  1. 什么是cicd

CI/CD 理念就是将这一重复性操作进行自动化处理。

持续集成 CI(Continuous Integration):在源代码变更后,触发自动检测、构建和测试的过程。在代码提交后,会自动进行构建和测试,并反馈结果。当结果符合预期时,再将代码集成到主干。持续集成的目标是快速确保当前变更是可用的。

持续交付 CD(Continuous Delivery):是基于持续集成基础上,将集成后的代码自动化部署到各个环境测试,确定可以发布生产版本。

持续部署 CD(Continuous Deployment):是基于持续交付的基础上,将在各个环境经过测试的应用自动化部署到生产环境。

  1. GitLab-CI

GitLab-CI就是一套配合GitLab使用的持续集成系统。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。

  1. GitLab-Runner

GitLab-Runner是什么?以及GitLab-Runner与GitLab-CI关系

gitlab-runner: 是 CI 的执行环境

GiTLab Runner就是运行器,类似于Jenkins,可以为我们执行一些CI持续集成、构建的脚本任务,运行器具有执行脚本、调度、协调的工作能力。

GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。

所以,GitLab-Runner就是一个用来执行软件集成脚本的东西。

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

Runner可以分布在不同的主机上,同一个主机上也可以有多个Runner。

注意:GitLab-CI会为每一个Runner生成一个唯一的token,Runner通过这个token与GitLab-CI进行通信。

Runner类型

GitLab-Runner可以分类两种类型:Shared Runner(共享型)Specific Runner(指定型)

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

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

  1. gitlab-runner executer

shell executor
这种方式是在docker容器中执行shell,docker服务需要选择定制化的镜像,该镜像必须拥有shell运行时需要的一切命令。

docker executor
和安装至host差不多

等等其他

  1. 环境准备

系统环境:CentOS Linux release 7.5.1804 (Core)

安装Gitlab版本:GitLab Enterprise Edition 13

安装Gitlab-runner版本:Version: 15.0.0

安装Docker版本:Docker version 1.13.1, build 7d71120/1.13.1

基础镜像以普通centos镜像文件为例

导入容器镜像文件到本地镜像库

cat system.tar | docker import - centos:7.5

查看导入的镜像文件

docker images

  1. 安装gitlab-runner

添加源gitlab-runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

安装gitlab-runner

yum install gitlab-runner -y

相关命令

gitlab-runner verify —— 检查 gitlab-runner 运行情况
gitlab-runner start —— 开启 gitlab-runner
gitlab-runner stop —— 关闭 gitlab-runner
gitlab-runner --version —— 查看 gitlab-runner 信息
gitlab-runner status  -- 查看状态
gitlab-runner list  -- 查看runner注册列表
gitlab-runner unregister --name "名称"  -- 删除注册信息
#使用令牌注销
gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n
#使用名称注销(同名删除第一个)
gitlab-runner unregister --name test-runner
#注销所有
gitlab-runner unregister --all-runners
删除runner
gitlab-runner verify --delete --name xxx
  1. 查看ci的url和token

查看CI地址和令牌

CI 的地址和令牌,在 项目 --> Settings --> CI/CD --> Runner:

  1. 注册gitlab-runner

实例1:注册gitlab-runner (docker executer)

gitlab-runner registe

查看gitlab-runner list

gitlab-runner list

那么,问题来了。注册好了的Runner的信息存放在哪儿了呢?
原来,Runner的信息是存放在一个配置文件里面的,配置文件的格式一般是.toml。这个配置文件的存放位置有以下几种情况:

  • 在类Unix操作系统下(0.5.0之后版本)
  1. 如果是以root用户身份运行gitlab-ci-multi-runner register,那么配置文件默认是/etc/gitlab-runner/config.toml 
  2. 如果是以非root用户身份运行gitlab-ci-multi-runner register,那么配置文件默认是~/.gitlab-runner/config.toml 
  • 在其他操作系统下以及0.5.0之前版本
    配置文件默认在当前工作目录下./config.toml

修改build_iso gitlab-runner配置文件

修改runner配置文件如下(主要修改runners.docker有注释部分),

[[runners]]
  name = "test"
  url = "https://git.gitlab.com/"
  token = "sdfsdsdf"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "centos:7.5"   # 指定基础镜像
    privileged = true  # 赋予权限
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/home:/home:rw", "/cache"]  # 配置映射目录
    pull_policy = ["if-not-present"]  # 指定读取本地镜像
    shm_size = 0

  1. Gitlab查看gitlab-runner添加信息

查看gitlab

  1. 编写.gitlab-ci.yml

gitlab-ci 的 Pipline 具体流程和操作,是在项目根目录下的 .gitlab-ci.yml 文件中配置声明的。触发 Pipline 运行之后,gitlab-runner 会根据配置的 .gitlab-ci.yml 文件进行执行,执行结果会显示在 gitlab 中。

.gitlab-ci.yml:用于定义 CI/CD 流程分为几个阶段,每个阶段需要执行哪些任务

.gitlab-ci.yml 关键字配置说明

KEYWORD

REQUIRED

DESCRIPTION

script

yes

CI/CD 过程需要执行的shell脚本

stage

no

一个job流程,默认test

variables

no

定义变量

only

no

指定当前job适用的git refs(分支、Tag)列表

except

no

与only相反

tags

no

通过标签管理或匹配runner

allow_failure

no

指定当前job是否容错,正常job失败会跳过后续job流程

参考文档:

CICD官方文档:https://docs.gitlab.com/

CICD中文文档:https://docs.gitlab.cn/jh/ci/quick_start/

Dcoker中文文档:DockerInfo-Docker容器技术教程,Docker信息传播和服务平台

其他参考文档:http://www.ttlsa.com/auto/gitlab-cicd-variables-zh-document/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值