GitLab Runner必须单独安装、注册并启动,三步缺一不可;Ubuntu/Debian推荐官方仓库安装(curl加源后apt install),其他系统或需特定版本时宜用二进制手动安装,注册时--url须为GitLab实例根地址、--registration-token须为项目级有效令牌。

gitlab-runner 不是 GitLab 自带的,装完 GitLab 服务后它根本不会自动出现;必须单独安装、注册、启动,三步缺一不可,否则 pipeline 永远卡在 pending。
怎么选安装方式:官方仓库 vs 手动二进制
Ubuntu/Debian 推荐走官方仓库,省心且版本可控;其他发行版(如 CentOS、Alpine)或需要特定版本时,手动下载二进制更稳妥。
- 官方仓库安装(仅限 Debian/Ubuntu):
先执行curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash,再sudo apt-get install gitlab-runner - 手动安装:先用
uname -m确认架构(x86_64对应linux-amd64,aarch64对应linux-arm64),然后从https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/下载对应包,比如gitlab-runner-linux-amd64 - 下载后必须
chmod +x,并移到/usr/local/bin/gitlab-runner,否则gitlab-runner register会报command not found - 验证安装:
gitlab-runner --version—— 如果输出类似Version: 15.6.0,说明装对了;别用gitlab-ci-multi-runner,它已弃用多年
注册时 URL 和 token 填错,90% 的 pending 都出在这儿
注册命令本身几乎不报错,但填错 --url 或 --registration-token,runner 就收不到任何 job。
OpenClaw 技能 — 给定一个 GitHub 仓库 URL,自动解析出 owner/repo 名称,发现其中的 YAML/properties 配置文件及其配对的中文字段说明;在 `workspace/{repo}/` 目录下按同步日期(格式为 `YYYY-MM-DD`)创建时间戳子目录;写入 `.openclaw-config-state.json` 状态文件。每次用户提问前,先比对远程仓库当前 ref(如 `main` 或 `master`)的最新提交 SHA 与本地状态文件中记录的 SHA:
-
--url必须是 GitLab 实例的根地址,例如https://gitlab.com/或https://your-gitlab.example.com/,不能是项目页(如https://your-gitlab.example.com/group/project),也不能是 API 地址(如https://your-gitlab.example.com/api/v4) -
--registration-token必须来自具体项目的Settings → CI/CD → Runners → New project runner页面,复制弹窗里的 token;group 或 instance 级 token 无法注册到项目级 runner - 如果遇到
x509: certificate signed by unknown authority,说明 runner 不信任你的 GitLab 证书;临时解决可加--tls-ca-file="",但生产环境应把 CA 证书放到/etc/gitlab-runner/certs/your-gitlab.example.com.crt
executor 选 shell 还是 docker?别凭感觉,看环境预装情况
选错 executor 是 script 报 command not found 或 permission denied 的主因,不是“docker 更高级”,而是“你有没有现成环境”。
- 用
shellexecutor:job 直接在宿主机的gitlab-runner用户下执行,适合已有完整工具链(node、python3、make等)的机器;但注意~/.bashrc不自动加载,PATH 可能不含/usr/local/bin - 用
dockerexecutor:需要宿主机已启用 Docker 服务,并把gitlab-runner用户加入docker组(sudo usermod -aG docker gitlab-runner);且.gitlab-ci.yml中必须显式声明image: node:18,否则默认用alpine:latest,里面连npm都没有 - 切换 executor 必须重注册:先
sudo gitlab-runner unregister --name "my-runner",再重新gitlab-runner register并指定--executor docker或--executor shell
注册完没反应?检查 service 状态、user 权限和 working-directory
注册只是写配置,runner 不会自动跑起来;它得作为系统服务运行,且用户和路径权限必须匹配。
- 确认服务状态:
sudo systemctl status gitlab-runner;如果不是active (running),就执行sudo systemctl start gitlab-runner -
gitlab-runner install时指定的--user很关键:不要用root,应创建专用用户(如useradd --create-home --shell /bin/bash gitlab-runner),否则 job 中 cache/artifacts 写入会失败 -
--working-directory必须设为该用户的 home 目录(如/home/gitlab-runner),否则 job 日志里会出现chdir: no such file or directory - 如果用
dockerexecutor 却报Cannot connect to the Docker daemon,除了确认docker服务已启,还要检查gitlab-runner用户是否在docker组里,以及是否重启了gitlab-runner服务(组变更需重新登录或重启服务才生效)
New project runner 拿新 token。另外,runner 状态显示为 online 不代表它能跑 job——还得看 .gitlab-ci.yml 里写的 tags 是否和注册时填的完全一致(大小写敏感、逗号分隔无空格)。

















