赞
踩
GitLab Runner 是一个开源的持续集成/持续交付(CI/CD)工具,用于在 GitLab CI/CD 环境中执行自动化构建、测试和部署任务。它是 GitLab CI/CD 的一部分,负责管理和执行 CI/CD 作业。
以下是 GitLab Runner 的一些关键特点和功能:
使用 GitLab Runner,你可以轻松地将 CI/CD 流程集成到 GitLab 中,实现自动化构建、测试和部署。它提供了强大的功能和灵活的配置选项,使得开发团队能够更高效地交付软件。无论是小型项目还是大型企业级项目,GitLab Runner 都是一个强大而可靠的 CI/CD 工具。
下面是专用Runner、群组Runner和共享Runner之间的对比介绍:
| 特性 | 专用Runner | 群组Runner | 共享Runner |
|---|---|---|---|
| 运行环境 | 为特定项目或组织专门配置的Runner | 为一组项目或组织共享的Runner | 为整个GitLab实例共享的Runner |
| 配置和管理 | 需要单独配置和管理每个项目的Runner | 可以集中配置和管理一组项目的Runner | 集中配置和管理整个GitLab实例的Runner |
| 资源隔离 | 提供独立的资源,不与其他项目共享 | 提供一定程度的资源隔离 | 共享资源,可能会受到其他项目的影响 |
| 安全性 | 提供更高的安全性,仅用于特定项目 | 提供一定程度的安全性 | 可能存在安全隐患,需要谨慎使用 |
| 可扩展性 | 随着项目数量增加,需要增加专用Runner | 可以共享一组Runner,减少资源需求 | 可以共享一组Runner,减少资源需求 |
| 灵活性 | 可以根据项目的特定需求进行定制 | 可以根据一组项目的共同需求进行定制 | 适用于整个GitLab实例,定制性较低 |
| 使用场景 | 适用于有严格隔离需求的敏感项目 | 适用于一组项目共享资源的情况 | 适用于整个GitLab实例的通用场景 |
| 部署和维护成本 | 需要为每个项目单独部署和维护Runner | 部署和维护一组Runner | 部署和维护整个GitLab实例的Runner |
请注意,上述表格中的特性和使用场景只是一般情况下的概括,并不适用于所有情况。根据具体的项目要求和资源约束,您可以选择适合的Runner类型来满足您的需求。
GitLab Runner 的工作流程如下:
整个过程是自动化的,GitLab Runner 负责管理作业的执行和结果的提交。它可以与 GitLab CI/CD 配合使用,为开发团队提供一个强大的持续集成和持续交付平台。通过配置不同的执行器和作业定义,你可以根据项目的需求和特定的环境设置来灵活地定义和执行作业。
GitLab CI GitLab Runner配置 - 初级篇_gitlab ci aluter-CSDN博客
https://docs.gitlab.com/runner/
出于兼容性原因,GitLab Runner major.minor 版本 应与 GitLab 主要和次要版本保持同步。年长的跑步者可能仍然可以工作 使用较新的 GitLab 版本,反之亦然。但是,功能可能不可用或无法正常工作 如果存在版本差异。
次要版本更新之间保证向后兼容性。然而,有时轻微 GitLab 的版本更新可以引入需要 GitLab Runner 在同一个次要版本上的新功能 版本。
GitLab Runner 15.0 对 注册 API 请求格式。它可以防止 GitLab Runner 与低于 14.8 的 GitLab 版本进行通信。 您必须使用适合 GitLab 版本的 Runner 版本,或者升级 GitLab 应用程序。
查看gitlab版本
gitlab-rake gitlab:env:info

https://hub.docker.com/r/gitlab/gitlab-runner/tags查找跟gitlab版本对应的runner版本
lpine Linux 和 Ubuntu 是两种常见的 Linux 发行版,它们在一些方面有所不同。
选择使用 Alpine Linux 还是 Ubuntu 取决于你的具体需求。如果你需要一个轻量级、高效的发行版,适用于容器化环境或资源受限的系统,那么 Alpine Linux 是一个不错的选择。如果你需要更广泛的软件选择、更丰富的功能和更友好的用户体验,那么 Ubuntu 可能更适合你。
进入项目->设置->CICD->runner



# 添加仓库
helm repo add gitlab https://charts.gitlab.io
# 安装
helm upgrade --install gitlab gitlab/gitlab \
--namespace=gitlab \
--create-namespace \
--timeout 600s \
--set global.edition=ce \
--set gitlab-runner.install=false \
--set global.hosts.domain=example.com \
--set certmanager-issuer.email=me@example.com
# 对应gitlab-runner镜像
registry.gitlab.com/gitlab-org/gitlab-runner:alpine-v16.7.0
kubesphere仓库安装:
该方式部署会按模块分布式部署:
在GitLab中,KAS(Kubernetes Agent Service)、Registry和Web Service是三个不同的功能模块。
综上所述,KAS用于与Kubernetes集群集成,Registry用于管理和存储Docker镜像,而Web Service则是你的应用程序或服务,可以通过GitLab CI/CD来自动化构建、测试和部署。这三个功能模块共同为GitLab提供了容器化和持续集成部署的能力。
Gitlab gitlab-ce-zh:11.1.4 持续集成-CSDN博客
Gitlab Runner安装官网文档
version: '3.8'
services:
gitlab-runner:
image: gitlab/gitlab-runner:alpine-v11.11.4
container_name: gitlab-runner
restart: always
volumes:
- ./config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock # 这一行是固定写法 不要随便改



注意:/var/run/docker.sock挂载使用HostPath卷
https://www.jianshu.com/p/2eb12252e4ee
部署 GitLab Runner | k8s 折腾笔记
注意:helm仓库中维护的版本都大于11,若想使用helm部署请升级gitlab
# 添加 chart 存储库
$ helm repo add gitlab https://charts.gitlab.io
# 查看存储库
$ helm repo list
NAME URL
gitlab https://charts.gitlab.io

#以下两个在gitlab页面获取
gitlabUrl: http://gitlab.base.svc.cluster.local # 使用k8s内部gitlab svc地址
runnerRegistrationToken: "gitlab-runner-tocken" #gitlab-runner注册用到的tocken
concurrent: 10 #最大作业并发数
checkInterval: 30 #新作业检查间隔
tags: "k8s-runner" #runner的标签
#rbac权限打开
rbac:
create: true
## Define specific rbac permissions.
## DEPRECATED: see .Values.rbac.rules
resources: ["pods", "pods/exec", "secrets","configmaps"]
verbs: ["get", "list", "watch", "create", "patch", "delete","update"]

要获取 Kubernetes(K8s)集群的名称、API 地址、CA 证书和令牌,你可以按照以下步骤进行操作:
# 运行以下命令来获取当前连接的集群的名称:输出结果@后为集群名
kubectl config current-context
# 下述命令也能获取集群名
kubectl config get-contexts
# 运行以下命令来获取当前连接的集群的 API 地址:
kubectl cluster-info | grep 'Kubernetes master'
# 运行以下命令来获取当前连接的集群的 CA 证书:
kubectl config view --minify --flatten -o jsonpath='{.clusters[].cluster.certificate-authority-data}' | base64 --decode
# 运行以下命令来获取当前连接的集群的访问令牌(Token):
kubectl config view --minify --flatten -o jsonpath='{.users[].user.token}' | base64 --decode
# 登录kubesphere,查找保密字典中的coredns-token能查看
注册-gitlab-runner官网参考,gitlab-runner register命令会修改/etc/gitlab-runner/config.toml配置,配置文件更改时不需要重启服务,每隔三秒GitLab Runner 会检查配置修改,并重新加载。config.toml配置官网 ,有的历史版本在线文档没有维护,需自行拉取,GitLab Docs历史版本
docker run -it --rm -p 4000:4000 registry.gitlab.com/gitlab-org/gitlab-docs:11.1
进入gitlab-runner pod终端执行下述命令:
/ # gitlab-runner register
Runtime platform arch=amd64 os=linux pid=33 revision=e828d3bc version=11.11.4
Running in system-mode.
# gitlab地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://xxx.xxx.shop:99/
# 项目token
Please enter the gitlab-ci token for this runner:
cp6KwLn3KDTLWN8SD3ax
# 描述也是runner名称
Please enter the gitlab-ci description for this runner:
[gitlab-runner-8575578f55-d8bfh]: ci
# 标签,建议跟gitlab-ci.yml中的阶段一致
Please enter the gitlab-ci tags for this runner (comma separated):
ci
Registering runner... succeeded runner=cp6KwLn3
# 选择执行器,从给出列表选择
Please enter the executor: parallels, shell, kubernetes, docker, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine:
[ci]: shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
如果选择 Docker 作为执行程序,系统将要求你输入默认值 图像用于未在 :.gitlab-ci.yml
Please enter the Docker image (eg. ruby:2.1):
alpine:latest
gitlab-runner register \
--non-interactive \
--run-untagged="true" \
--locked="false" \
--executor "shell" \
--url "http://gitlab.base.svc.cluster.local" \
--registration-token "hFwboXgWNwBGgy4omYi2" \
--description "share-runner" \
--tag-list "share" \
#11.1版本一下不支持该参数,自行删除
--request-concurrency 1 \
--limit 2 \
--access-level="not_protected" \
gitlab-runner register比较常用参数介绍:

或者在gitlab-runner容器中执行:
gitlab-runner verify

| 命令 | 描述 |
|---|---|
| gitlab-runner register | 注册一个新的 Runner |
| gitlab-runner start | 启动 Runner |
| gitlab-runner stop | 停止 Runner |
| gitlab-runner restart | 重启 Runner |
| gitlab-runner status | 查看 Runner 状态 |
| gitlab-runner list | 列出已注册的 Runner |
| gitlab-runner unregister --id | 删除已注册的 Runner |
| gitlab-runner unregister --all-runners | 注销所有Runner |
| gitlab-runner update | 更新 Runner 的二进制文件 |
| gitlab-runner verify | 检查注册的runner是否可以连接,但不验证GitLab服务是否正在使用runner |

这些工具需要集成到Runer中,才能实现CI过程,这而介绍两种集成方式:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。