侧边栏壁纸
博主头像
欧德的半位面博主等级

欢迎迷途的旅人

  • 累计撰写 6 篇文章
  • 累计创建 4 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

【Gitlab-CICD-二】GitlabCICD基本概念与GitlabRunner部署

欧德之怒
2024-09-10 / 0 评论 / 0 点赞 / 6 阅读 / 8903 字

基本概念

.gitlab-ci.yml

  • 即gitlab cicd的配置文件
  • 在项目根目录下配置.gitlab-ci.yml文件,可以控制ci流程的不同阶段
  • CI的阶段主要分为安装(install)/检查(eslint)/编译(build)/部署(deploy)
  • gitlab平台会扫描.gitlab-ci.yml文件,并据此处理ci流程
  • 在每次团队成员push/merge后触发,gitlab-ci检查项目下有没有.gitlab-ci.yml文件,如果有则会执行设置的脚本内容,并完整地走一遍流程

Pipleline

  • 即流水线
  • Pipeline是Gitlab根据项目的.gitlab-ci.yml文件执行的流程,它由许多个任务节点组成, 而这些Pipeline上的每一个任务节点,都是一个独立的Job
  • 每个Job都会配置一个stage属性,来表示这个Job所处的阶段
  • 一个Pipleline有若干个stage,每个stage上有至少一个Job

Runner

  • 运行流水线的执行机,用于拉起执行容器进行job的作业
  • 在特定机器上根据项目的.gitlab-ci.yml文件,对项目执行pipeline的程序
  • 分为 Specific Runner 和 Shared Runner两种类型
    • Specific Runner:指定Runner,私有项目使用的,无运行时间限制,因此我们后续默认使用此类型Runner
    • Shared Runner:共享Runner
      • Gitlab平台提供的免费使用的runner程序,它由Google云平台提供支持,每个开发团队有十几个。对于公共开源项目是免费使用的,如果是私人项目则有每月2000分钟的CI时间上限

步骤

前提

gitlab版本

  • 最低版本要求:11.3
  • 登录gitlab
  • 点击【帮助】,在内容中可以查看到当前版本
    gitlab-runner-查看版本

gitllab项目开启CICD

  • gitlab新增的项目已默认开启CICD
  • 如果CICD项目默认关闭,需要使用以下步骤开启
    • 登录Gitlab-进入项目
    • 点击设置-通用,点击展开【可见性,项目功能,权限】
    • 在【仓库】下确保【CI/CD】的开关处于打开状态
      gitlab-runner-开启cicd

准备Executor

executor选择

  • 可以理解为gitlba-runner以什么平台/方式运行,这个平台/方式就是"Executor”
  • 当前案例,executor选项为Docker
  • executor选择参考表
  • 准备一台安装了Docker的Linux执行机

拉取gitlab-runner镜像

  • 登录dockerhub(需要代理上网),搜索【gitlab/gitlab-runner】,查看最新的稳定版tag(不选择bleeding后缀的版本,不稳定),如v16.6.2
  • 不建议使用latest,不利于版本控制和更新
    gitlab-runner-dockerhub

创建Runner容器

  • gitlab-runner是根据tag触发执行的,因此需要先确定项目tag,如main
  • 创建数据存储路径和compose路径
# 创建Runner数据存储路径
mkdir -p /data/gitlab/runner/main
# 创建Runner的compose路径
mkdir -p /data/gitlab/compose/main
# 创建docker-compose.yaml文件到Runner的compose目录
cd  /data/gitlab/compose/main && touch docker-compose.yaml
  • 创建自定义网络(可选,推荐)
docker network create --driver bridge --subnet 172.19.0.0/16 --gateway 172.19.0.1 server
  • 修改docker-compose.yaml文件
version: "3.0"
services:
  runner:
    image: gitlab/gitlab-runner:v16.6.2
    # 需要增加伪终端,不然无限重启
    tty: true
    container_name: runner-main
    restart: unless-stopped
    privileged: true
    hostname: 'runner-main'
    # 设置自定义域名解析
    extra_hosts:
       - "test.gitlab.com:192.168.1.2"
    environment:
      - TZ=Asia/Shanghai
    ports:
      - '2100:22'
    volumes:
      - "/data/gitlab/runner/main:/etc/gitlab-runner"
      - "/var/run/docker.sock:/var/run/docker.sock"
    networks:
      server:
        ipv4_address: "172.19.0.2" # 指定容器静态IP
networks:
  server:                # 此处使用已存在的网络,实际使用中需要根据情况修改
    external: true

  • 启动runner容器
cd /data/gitlab/compose/main && docker compose up -d

Gitlab上注册Runner

权限检查

  • 登录gitlab,进入到需要使用cicd的项目
  • 检查自身账户在此项目的的权限,请确保权限大于等于Maintainer
  • 在【设置】-【CI/CD】-【Runner】-【指定Runner】,获取token和gitlab url
  • 登录runner容器执行注册相关命令

登录容器

 # 登陆容器
 docker exec -ti runner-main bash
 # 写入gitlab的域名信息,假设IP为192.168.1.2,域名为test.gitlab.com,如果docker-compose设置了
 echo "192.168.1.2 test.gitlab.com" >> /etc/hosts

执行登录命令

gitlab是http的情况

  • 15.10 版本之前,旧版注册方法
    • docker-image是用于运行流水线的构建容器,需要用户根据自己需求制作,安装如git、svn之类的如那就
gitlab-runner register --url "http://test.gitlab.com"  --registration-token  "xxxxxxxxx"  --name "runner-main" --executor "docker"  --tag-list "main"  --docker-image "karthrand/runner:20240103"
  • 15.10 版本之后,新版注册方法
    • 在gitlab项目-设置-CI/CD设置-Runner下点击【新建项目runner】
    • 在新的界面填写runner设置后,获得类似下面的命令后在gitlab-runner中执行
    • 后续设置都需要手动填写,新版本安全更新导致
gitlab-runner register  --url http://test.gitlab.com  --token xxxxx

gitlab是自签名https的情况

  • 15.10 版本之前,旧版注册方法
    • gitlab坑爹的不允许跳过https验证,必须使用证书才行
# 创建存放自签名certs文件的地址
mkdir -p /etc/gitlab-runner/certs
openssl s_client -showcerts -connect test.gitlab.com:443 -servername test.gitlab.com < /dev/null 2>/dev/null | openssl x509 -outform PEM > /etc/gitlab-runner/certs/test.gitlab.com.crt
# 注册
gitlab-runner register  --url "https://test.gitlab.com/" --registration-token "xxxx" --name "runner-main" --executor "docker"  --tag-list "main" --tls-ca-file "/etc/gitlab-runner/certs/test.gitlab.com.crt" --docker-image "karthrand/runner:20240103"
  • 15.10 版本之后,新版注册方法
gitlab-runner register  --url https://test.gitlab.com  --token xxxxx

验证注册情况

  • 在gitlab项目下查看【设置】-【CI/CD】-【Runner】-【指定Runner】下是否新增一个runner
  • 如果新增runner的图标部署绿色而是黑色,或者想验证下Runner是否注册成功,都可以执行以下命令
gitlab-runner verify
  • 查看/etc/gitlab-runner/下注册后新增的高级配置文件:config.toml
    • 我们也可以在物理执行机的/data/gitlab/runner/main下查看,因为此路径已经挂载了
    • 新增几处配置,如下
concurrent = 1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "runner-main"
  url = "http://test.gitlab.com/"
  id = 1
  token = "xxxxxx"       
  token_obtained_at = 2024-01-03T19:54:00Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  environment = ["TZ=Asia/Shanghai"]   # 新增
  [runners.cache]
    MaxUploadedArchiveSize = 0
  [runners.docker]
    tls_verify = false
    image = "karthrand/runner:20240103"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]  # 编辑新增docker.sock
    shm_size = 0
    network_mtu = 0
    allowed_pull_policies = ["if-not-present"]         # 新增
    pull_policy = ["if-not-present"]                       # 新增
    dns = ["192.168.1.254", "8.8.8.8"]  # 新增,此处我添加了内部dns 192.168.1.254和谷歌dns,根据需求更改
  • 执行命令使修改生效
gitlab-runner restart
  • 验证是否生效
gitlab-runner verify

参考链接

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区