Gitlab系列(3)—— 基于Gitlab-runner 的CI/CD集成

概念

Gitlab从8.0开始内部集成CI组件.
主要的几个角色:

  • Gitalb服务器(Runner也可以和Gitlab在一台服务器,但不推荐)
  • 应用服务器
    一般来说:这三者应该是互相独立的服务器;

职责划分:

  • Gitlab管理源代码仓库
  • Gitlab-runner执行CI/CD任务
  • 应用服务器运行应用。

CI集成流程

  • 部署runner
  • 将runner注册到gitlab中
  • 项目中添加ci配置文件(默认为:根目录下 名为 .gitlab-ci.yml 的配置文件)

安装runner

这里采用docker的方式
[root@origin ~]# mkdir -p /opt/docker-compose/gitlab-runner
[root@origin ~]# cd /opt/docker-compose/gitlab-runner/
[root@origin gitlab-runner]# vim docker-compose.yml
加入以下内容
version: "3.8"
services:
  gitlab-ruuner:
    image: gitlab/gitlab-runner:alpine-v14.2.0
    container_name: gitlab-runner
    restart: always
    environment:
      TZ: Asia/Shanghai
    volumes:
    - 'gitlab-runner-config:/etc/gitlab-runner'
    - '/var/run/docker.sock:/var/run/docker.sock'
volumes:
  gitlab-runner-config: {}
启动
[root@origin gitlab-runner]# docker-compose up -d
Creating network "gitlab-runner_default" with the default driver
Creating volume "gitlab-runner_gitlab-runner-config" with default driver
Pulling gitlab-ruuner (gitlab/gitlab-runner:alpine-v14.2.0)...
alpine-v14.2.0: Pulling from gitlab/gitlab-runner
df20fa9351a1: Pull complete
68b5efbe3d56: Pull complete
4343faab059b: Pull complete
8eaac47311c7: Pull complete
05ca9b892c72: Pull complete
1e464858e46d: Pull complete
bc6ed1be2837: Pull complete
Digest: sha256:577ed084b426f819eaf612889922f66bdf7edbe87522ee49c3cf38a906a578ab
Status: Downloaded newer image for gitlab/gitlab-runner:alpine-v14.2.0
Creating gitlab-runner ... done

注册runner(DIND)

官方一共提供了3种runner,根据需要自行选择,这里以项目级runner为例
在这里插入图片描述
使用docker执行CI流水线,官方提供了三种方式,这里采用的是docker executor ,所以选择后两种都可以;shell excutor 需要在宿主机中搭建流水线所需环境
在这里插入图片描述
这里分别展示后两种方式

  • 第二种(dind)
    这种方式实际上是在docker 容器内起了一个docker服务,用于处理流水线任务;进入容器
gitlab-runner register -n \
--url http://blog_gitlab.kalpana.top:9080/ \
--registration-token xxxxxxxxxxxxx\
--executor docker \
--description "dind" \
--tag-list "dind" \
--docker-image "docker:20.10.8" \
--docker-privileged \
--docker-volumes "/certs/client"

执行结果
在这里插入图片描述
在这里插入图片描述
至此Gitlab服务器端的工作就已经完成了,接下来需要到对应的项目中添加流水线配置文件

注册runner(BIND)

与上面(DIND)不同的是,这种方式只在docker容器内部,安装一个客户端,而直接与runner宿主机的docker server 交互;这得益于docker的C/S架构

  • 进入容器,执行以下命令
gitlab-runner register -n \
--url http://blog_gitlab.kalpana.top:9080/ \
--registration-token xxxxxxxxxxxxx\
--executor docker \
--description "bind" \
--tag-list "bind" \
--docker-image "docker:20.10.8" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
  • 执行成功
    在这里插入图片描述

项目配置CI(DIND)

  • 在项目根目录添加配置文件 .gitlab-ci.yml
image: docker:20.10.8

variables:
  DOCKER_TLS_CERTDIR: "/certs"

services:
  - name: docker:20.10.8-dind
  command: ["--registry-mirror", "自定义镜像仓库"]

before_script:
  - docker info

build:
  stage: build
  tags:
    - dind
  only:
    - dev
  script:
    echo "ci success"

这里有个点需要注意,如果在注册runner时,指定了tags,那么在这个配置文件中也需要指定tags,否则这个流水线会卡住,因为 tags 本身的作用就是对runner的一种限定;话句话说,不指定对应的tag,gitlab就不知道去调用哪个runner;可以通过 --run-untagged=“true” 取消这个设定,即未指定tag的流水线也会触发这个runner

  • 提交这个文件
    在这里插入图片描述
    可以看到这里有两个流水线任务,下面那个就是第一次未指定 tags ,卡住的任务。
    可以看到任务已经执行成功。
    在这里插入图片描述

项目配置CI(BIND)

  • 与DIND的区别在于脚本内容
image: docker:20.10.8

before_script:
  - docker info

build:
  stage: build
  tags:
    - bind
  only:
    - dev
  script:
    - echo "bind ci success"
    - docker images
  • 提交配置文件,查看流水线任务
    在这里插入图片描述
    成功

其他配置

复用本地镜像开启debug模式:链接

接下来,将介绍常用的关键字以及项目实战。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GitLab-RunnerGitLab提供的一个开源工具,可以用于在GitLab上运行CI/CD任务。通过GitLab-Runner,可以方便地实现自动化的构建、测试、集成和部署等任务。 下面是一些使用GitLab-Runner打造锋利的CI/CD的方法: 1. GitLab-Runner安装和配置:首先需要安装GitLab-Runner,并将其配置到GitLab服务器上。可以通过Docker容器、二进制包或源码编译的方式安装GitLab-Runner,然后在GitLab服务器上注册Runner,并设置Runner的执行环境和权限等参数。 2. 编写CI/CD脚本:在GitLab上创建项目,并在项目中编写CI/CD脚本,定义任务的执行流程和步骤。可以使用GitLab提供的CI/CD工具和插件,也可以使用第三方工具和脚本库。 3. 构建、测试和集成:通过GitLab-Runner执行CI/CD任务,自动化构建、测试和集成代码,并生成测试报告和代码覆盖率报告等文档。可以使用各种编程语言和框架,如Java、Python、Ruby、Node.js等。 4. 部署和发布:通过GitLab-Runner将代码部署到目标服务器上,并执行自动化发布流程。可以使用容器化技术、配置管理工具、自动化部署工具等实现高效、可靠的部署和发布。 5. 监控和反馈:通过GitLab的监控和反馈机制,及时发现和解决CI/CD任务中的问题和错误,并持续优化任务的执行效率和稳定性。可以使用各种监控工具和日志分析工具,如Prometheus、Grafana、ELK等。 总之,使用GitLab-Runner打造锋利的CI/CD,可以提高开发和运维的效率和质量,降低项目的风险和成本,实现持续交付和快速迭代的目标。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值