gitlab-runner的安装与配置

官方文档:Install GitLab Runner


Docker方式:


1
2
3
4
docker run -d --name gitlab-runner --restart always \
-v /home/ubuntu/glab_runner:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest

其中

/home/ubuntu/glab_runner为存放gitlab runner配置文件的位置

*:*为对应关系

进入容器docker exec -it e6ecd9372fcb bash, 并进行注册gitlab-runner register

依次按提示输入信息

(其中 Enter an executor: docker, docker+machine, kubernetes, custom, docker-ssh, parallels, shell, ssh, virtualbox, docker-ssh+machine: 选择docker)

此时在gitlab某项目设置-CI/CD-Runner,可以看到新增加的Runner,且description和tags和上面输入的一一对应

在项目中添加.gitlab-ci.yml,tags指定cui_test,则将可以用刚注册的Runner去跑.gitlab-ci.yml描述的任务


原生方式安装(以Ubuntu为例)


在 Ubuntu 上安装使用极狐GitLab Runner

curl -LJO “https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb

dpkg -i gitlab-runner_amd64.deb


激活:

1
2
3
sudo gitlab-runner verify

sudo gitlab-runner restart

查看配置文件:

删除某个runner:

gitlab-runner verify --delete --name xxx


原生方式安装(以Mac为例)


下载并安装Gitlab-runner命令行(二进制文件)

1
2
3
sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64

sudo chmod +x /usr/local/bin/gitlab-runner

初始化gitlab-runner:

1
2
3
cd ~
gitlab-runner install
gitlab-runner start

目前看还不支持arm的机器

详细参考 GitLab-CI:从零开始的前端自动化部署



20250509 帮ry安装, 用ai给的:

各种Executor各方面特点的比较:

给的结果不太行…

不如直接用gitlab仓库那里给的命令:


https://git.ont.io/devops/test-runner/-/settings/ci_cd

Download the binary for your system

sudo curl -L –output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

Give it permission to execute

sudo chmod +x /usr/local/bin/gitlab-runner

Create a GitLab Runner user

sudo useradd –comment ‘GitLab Runner’ –create-home gitlab-runner –shell /bin/bash

Install and run as a service

sudo gitlab-runner install –user=gitlab-runner –working-directory=/home/gitlab-runner
sudo gitlab-runner start

sudo gitlab-runner register –url https://git.ont.io/ –registration-token GR1348941XULjBNUYNa5bbQvrzhxo

https://git.ont.io/devops/test-runner/-/settings/ci_cd


gitlab runner如何读取secret

GitLab Runner 可以通过几种不同的方式读取和使用敏感信息(secrets)。以下是主要的方法:

1. CI/CD 变量

GitLab CI/CD 提供了变量功能,可以在项目或组级别设置敏感信息:

  • 项目设置中添加变量

    • 进入项目 → Settings → CI/CD → Variables
    • 添加键值对,并标记为”Protected”和”Masked”以增强安全性
    • .gitlab-ci.yml 中可以使用 $VARIABLE_NAME 引用这些变量
  • 组级别变量

    • 在组设置中设置变量,将应用于组内所有项目

2. GitLab 环境文件

对于 Docker executor,可以使用环境文件:

1
2
3
job:
script:
- export SECRET_KEY=$MY_SECRET # MY_SECRET 是在 GitLab CI/CD 变量中定义的

3. GitLab CI 文件变量

.gitlab-ci.yml 中可以直接定义变量(不推荐用于敏感信息):

1
2
3
4
5
6
variables:
NON_SENSITIVE_VAR: "public value"

job:
variables:
JOB_SPECIFIC_VAR: "value"

4. Vault 集成

对于更复杂的环境,可以使用 HashiCorp Vault:

1
2
3
4
5
job:
script:
- vault_token=$(vault write -field=token auth/jwt/login role=demo jwt=$CI_JOB_JWT)
- export VAULT_TOKEN=$vault_token
- secret=$(vault kv get -field=value secret/myproject/api_key)

5. Runner 配置文件中的环境变量

在 Runner 配置文件 (config.toml) 中设置全局环境变量:

1
2
[[runners]]
environment = ["SECRET_KEY=value"]

安全建议:

  • 优先使用 GitLab CI/CD 变量功能
  • 对敏感变量启用 “Protected” 和 “Masked” 选项
  • 考虑使用外部密钥管理系统(如 Vault)用于生产环境
  • 避免在 .gitlab-ci.yml 中直接存储敏感信息

您需要针对特定的 secret 管理需求提供更多细节吗?


runner分好几种: 项目级别的,全局共享的

二进制方式,和docker方式安装的git, 也都可以在选择 执行器模式 时选shell,或者docker

您需要为您的 GitLab Runner 选择一个执行器(executor)。每种执行器有不同的特点和用途,以下是主要选项的比较,帮助您做出选择:

常用执行器类型:

  1. shell - 最简单,直接在 Runner 所在机器上执行命令

    • 优点:设置简单,无需额外依赖
    • 缺点:可能污染主机环境,安全性较低
  2. docker - 在 Docker 容器中执行作业

    • 优点:隔离环境,可指定镜像,干净的执行环境
    • 缺点:需要 Docker 环境
  3. kubernetes - 在 Kubernetes 集群中执行作业

    • 优点:高度可扩展,适合大型团队和复杂部署
    • 缺点:需要 Kubernetes 集群,配置复杂
  4. ssh - 通过 SSH 在远程服务器上执行作业

    • 优点:可利用远程机器资源
    • 缺点:需要 SSH 配置和凭证管理
  5. custom - 自定义执行器实现

    • 优点:完全自定义控制
    • 缺点:需要自行开发和维护

推荐选择:

  • 开发/测试环境:Shell 或 Docker(Docker 更推荐,因为环境隔离)
  • 生产环境:Docker 或 Kubernetes(取决于规模和复杂度)
  • 特殊需求(如 Windows 构建):docker-windows 或适合的专用执行器

如果您是初次设置或不确定,Docker 执行器是一个很好的平衡点 - 它提供良好的隔离性和可重复性,同时配置相对简单。

您使用的环境是什么?这是开发、测试还是生产环境?有任何特殊的构建需求吗?




标签可加可不加..但如果设置runner时加了,就必须在项目的 .gitlab-ci.yml中显式也写上