乔克视界 乔克视界
首页
  • 运维
  • 开发
  • 监控
  • 安全
  • 随笔
  • Docker
  • Golang
  • Python
  • AIOps
  • DevOps
  • Kubernetes
  • 心情杂货
  • 读书笔记
  • 面试
  • 实用技巧
  • 博客搭建
友链
关于
收藏
  • 分类
  • 标签
  • 归档

乔克

云原生爱好者
首页
  • 运维
  • 开发
  • 监控
  • 安全
  • 随笔
  • Docker
  • Golang
  • Python
  • AIOps
  • DevOps
  • Kubernetes
  • 心情杂货
  • 读书笔记
  • 面试
  • 实用技巧
  • 博客搭建
友链
关于
收藏
  • 分类
  • 标签
  • 归档
  • Docker

  • Golang

  • AIOps

  • Python

  • DevOps

    • Tekton

    • ArgoWorkflow

    • Gitlab

      • 搭建GitLab服务器
      • GitlabCI与JenkinsCI对比
      • GitLab CI服务器的搭建
        • 持续集成(CI)
        • 持续集成工具
        • gitlab-ci runner 的安装与配置
          • 1.安装 Docker
          • 2.安装 gitlab ci runner
          • 3.设置 Docker 权限
          • 4.gitlab-runner 注册
          • 4.1 gitlab-runner 的类型
          • 4.2  进行注册
      • Kubernetes 集群中运行 GitLab-Runner 来执行 GitLab-CI
      • Gitlab-ci的简易入门—基于python项目的CI演示
    • Ansible

  • Kubernetes

  • 专栏
  • DevOps
  • Gitlab
乔克
2025-07-19
目录

GitLab CI服务器的搭建

# 持续集成(CI)

CI,Continuous Integration,持续集成,是软件开发过程中一个非常重要的环节,在互联网敏捷开发的过程中,持续集成通常用来进行日常编译和自动化测试,来保证及时发现提交的问题,避免影响项目进度。

通常持续集成的过程包括:

  • 提交(合并)代码
  • 编译
  • 测试
  • 发布

不同的项目可能步骤有所不同,一些更加规范的公司的项目可能会加入静态代码检查,也有不少的小项目迫于进度和 QA 的工作压力,可能连测试过程都没有。

be08cda81b2a093e602d317bca5e3510 MD5

GitLab CI/CD 转载自:https://docs.gitlab.com/ee/ci/ (opens new window)

# 持续集成工具

CI 工具有很多,目前最为常用应该是 Jenkins。Jenkins 通常包括一个 master 和很多个 slave。master 用于配置和组织节点、任务,slave 则用来真正执行配置好的任务。因为用户群体的庞大,Jenkins 上的各种插件,尤其是很多可视化插件都非常丰富,可以帮助很多新手快速配置所需的任务。

gitlab-ci 是 git 官方的持续集成工具,在 Git 工程管理页面上,也有专门的 CI 配置和展示页。

83d33bf40b1ac20b8bd7e4f50e23f29a MD5

Github 上许多优秀的开源项目的 Readme.md 中,可以看到有如下图中“build|passing”的图标,就是通过 markdown 元素引用了当前版本 CI/CD 的结果的展示。

014c330d2bb202f2684d9b95c13e0c08 MD5

随着代码更多地通过 Git 进行管理,gitlab-ci 也成为了常见的 CI 平台。就我理解,gitlab-ci 是一个简易版的 jenkins,git 服务器兼任了 Jenkins master 的功能,而我只需要准备好一个 slave 即可。而且,gitlab-ci 的 runner 支持多重环境,尤其是 Docker 还有专属的配置支持。配置过程也非常的简便无脑,比起 Jenkins 的 slave 配置可以说是完胜了。

之前我一直都是在公司的 Jenkins 服务平台上做 CI(其实也没做过几个)的,由于 Jenkins 权限管控的问题,不方便在 slave 上尝试和排查环境问题(可以看我之前的 oclint 出现环境问题的排查)。刚好现在的公司项目使用的是 gitlab-ci,因此就想学习一下和尝试一下。

# gitlab-ci runner 的安装与配置

# 1.安装 Docker

安装 docker 是为了后面跑 runner

参考 https://docs.docker.com/install/linux/docker-ce/centos/ (opens new window)

  • linux 上
curl -sSL https://get.docker.com/ | sh
1
  • Mac OS 上

macOS 我们可以使用 Homebrew 来安装 Docker。

Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:

$ brew cask install docker
==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password:          # 输入 macOS 密码
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺  docker was successfully installed!
1
2
3
4
5
6
7
8
9
10
11

在载入 Docker app 后,点击 Next,可能会询问你的 macOS 登陆密码,你输入即可。之后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标(3dbe13a0264b3273c9b533f7ae13cb25 MD5)。

# 2.安装 gitlab ci runner

  • linux 上

参考链接:https://docs.gitlab.com/runner/install/linux-manually.html (opens new window)

使用二进制文件安装

# Linux x86-64
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
1
2
3
4
5
6

查看是否运行正常

root@i-klhcs1uo:~# gitlab-runner status
Runtime platform                                    arch=amd64 os=linux pid=16705 revision=c127439c version=13.0.0
gitlab-runner: Service is running!
1
2
3
  • Mac OS 上
➜  [/Users/mac] brew install gitlab-runner
➜  [/Users/mac] brew services start gitlab-runner
➜  [/Users/mac] gitlab-runner status
Runtime platform                                    arch=amd64 os=darwin pid=61606 revision=21cb397c version=13.0.1
gitlab-runner: Service is running!
1
2
3
4
5

# 3.设置 Docker 权限

为了让 gitlab-runner 能正确的执行 docker 命令,需要把 gitlab-runner 用户添加到 docker group 里,然后重启 docker 和 gitlab ci runner

usermod -aG docker gitlab-runner
service docker restart
gitlan-runner restart
1
2
3

# 4.gitlab-runner 注册

注册流程是获取 runner token >>  注册

# 4.1 gitlab-runner 的类型

  • shared : 运行整个平台项目的作业(gitlab)
  • group: 运行特定 group 下的所有项目的作业(group)
  • specific: 运行指定的项目作业(project)
  • locked: 无法运行项目作业
  • paused: 不会运行作业

首先得知道 gitlab-runner 的类型有哪些,可以在不同的界面获取 runner token 就会生成不同类型的 runner。。

gitlab-runner 是支持分布式的,可以运行在各种环境,极大的方便开发和测试,当安装好 gitlan-runner 之后,需要进行注册到 gitlab 上,进行关联,首先登陆 gitlab 获取 url 和 tocken

获取shared**类****型 runnertoken**

进入系统设置 -> Runners

bba4e72f45b929961b9b5477d0c9dcbb MD5

获取 group 类型的 runnertoken

进入 group -> Settings -> CI/CD -> Runners -> Group Runners

4cd272da89e634442a30ff96a13a3cc9 MD5

获取 specific 类型的 runnertoken

进入具体的项目 -> Settings -> CI/CD -> Runners -> Specific Runners

83d33bf40b1ac20b8bd7e4f50e23f29a MD5

cd66be20b91b9e3e634e4c866e9a7ed0 MD5

# 4.2  进行注册

  • 方式 1: 交互式注册
➜  [/Users/mac] gitlab-runner register
Runtime platform                                    arch=amd64 os=darwin pid=61621 revision=21cb397c version=13.0.1
WARNING: Running in user-mode.
WARNING: Use sudo for system-mode:
WARNING: $ sudo gitlab-runner...

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://gitlab.example.com/
Please enter the gitlab-ci token for this runner:
6-uZ1ndZ2NRGp8_TghnL
Please enter the gitlab-ci description for this runner:
[Double-dong.local]: gitlab-ci
Please enter the gitlab-ci tags for this runner (comma separated):
python3.4
Registering runner... succeeded                     runner=6-uZ1ndZ
Please enter the executor: docker+machine, kubernetes, ssh, virtualbox, docker-ssh, parallels, shell, docker-ssh+machine, custom, docker:
docker
Please enter the default Docker image (e.g. ruby:2.6):
python:3.4
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
➜  [/Users/mac] gitlab-runner verify
Runtime platform                                    arch=amd64 os=darwin pid=61635 revision=21cb397c version=13.0.1
WARNING: Running in user-mode.
WARNING: Use sudo for system-mode:
WARNING: $ sudo gitlab-runner...

Verifying runner... is alive                        runner=NkYLeMbb
➜  [/Users/mac] gitlab-runner list
Runtime platform                                    arch=amd64 os=darwin pid=61640 revision=21cb397c version=13.0.1
Listing configured runners                          ConfigFile=/Users/mac/.gitlab-runner/config.toml
gitlab-ci                                           Executor=docker Token=NkYLeMbbpJ2NyuwxaVKG URL=http://gitlab.example.com/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  • url:私有 git 的路径
  • token:项目的 token,用于关联 runner 和项目
  • name:runner 的名字,用于区分 runner
  • tags:用于匹配任务(jobs)和执行任务的设备(runners)
  • executor:执行环境

其中 url 和 token 在项目的 CI 配置页上可以找到。name 只是用来区分两个 runner,没有特殊的作用。tags 这个属性,job 和 runner 都有,用来匹配任务和执行任务的 runner。job 的 tags 属性下一篇会提到,也可以自行查阅.gitlab-ci.yml 的语法。runner 的 tag 可以有多个,注册时用逗号(comma)分隔即可。当某个 job 的 tag 是当前 runner tags 的一个子集时,这个 job 就可以被分配到当前 runner 上执行。

举个栗子

runner 的 tag 设为:python2.7,python3.4

job 的 tag 设为:python2.7 或 python3.4,macos 就可以在这个 runner 上执行。

job 的 tag 设为:java,这个 job 就不会被分配到这个 runner 上。

executor 就是执行 job 的环境,通常我们都会选择 docker,如果有其他需要的也可以自行查阅文档。

当我们完成设置以后,可以通过vi ~/.gitlab-runner/config.toml打开 runner 的配置文件,刚才所填写的信息都会记录在其中。如果配置了多个 runner,就会像图中一样,出现两个 runners 的 section。

aed5adbf549f3efd5893a2ecc9ec7a1a MD5

注册成功,返回到 gitlab 已经是激活的状态。

4991eb75e5e3ff60f446df6fe9bf9003 MD5

  • 方式 2: 直接注册
➜  [/Users/mac] gitlab-runner register \
  --non-interactive \
  --executor "shell" \
  --url "http://gitlab.example.com/" \
  --registration-token "AvpQDzBCL66sYKyURChH" \
  --description "devops-runner" \
  --tag-list "build,deploy" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"
1
2
3
4
5
6
7
8
9
10

⚠️:这里说一下如果 gitlab 服务器开启了 https,则 gitlab-runner 在注册的时候需要把证书的签名文件,解决办法如下:

➜  [/Users/mac]  gitlab-runner register \
   --non-interactive \
   --tls-ca-file=/etc/gitlab/ssl/gitlab.example.com.crt  \
   --url "https://gitlab.example.com/" \
   --registration-token "AvpQDzBCL66sYKyURChH" \
   --executor "docker" \
   --docker-image maven:latest \
   --description "runner " \
   --tag-list "run" \
   --run-untagged \
   --locked="false"
Running in system-mode.

Registering runner... succeeded                     runner=AvpQDzBC
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 4.3 注册之后的效果

3a62801116b717216bd831a083f17771 MD5

参考文章:

https://www.jianshu.com/p/30e3f2940078 (opens new window)

https://docs.gitlab.com/11.9/runner/register/index.html (opens new window)

上次更新: 2025/07/19, 11:33:23
GitlabCI与JenkinsCI对比
Kubernetes 集群中运行 GitLab-Runner 来执行 GitLab-CI

← GitlabCI与JenkinsCI对比 Kubernetes 集群中运行 GitLab-Runner 来执行 GitLab-CI→

最近更新
01
读《额尔古纳河右岸》有感
07-19
02
读《命运》有感
07-19
03
读《月亮与六便士》有感
07-19
更多文章>
Theme by Vdoing | Copyright © 2019-2025 乔克 | MIT License | 渝ICP备20002153号 |
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式