配置gitlab-runner实现指定仓库推送后本地执行shell命令报错求解
GitLab Runner
getwd: stat .: permission denied 报错排查修复方案 该报错核心原因是gitlab-runner运行身份对工作相关目录缺少必要权限,按以下步骤排查修复即可:
1. 修正主工作目录权限
你安装时指定的runner工作目录为/home/gitlab-runner,先检查该目录归属与权限:
ls -ld /home/gitlab-runner
正常输出的所有者应为gitlab-runner:gitlab-runner,权限不低于700。如果不符合要求,执行以下命令修正:
sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner sudo chmod 700 /home/gitlab-runner
2. 修正构建、缓存目录权限
Runner运行时会自动在工作目录下创建builds(存储仓库代码)、cache(存储构建缓存)两个子目录,检查这两个目录的权限:
ls -ld /home/gitlab-runner/builds /home/gitlab-runner/cache
如果权限或归属异常,执行命令修正:
sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner/{builds,cache} sudo chmod -R 755 /home/gitlab-runner/{builds,cache}
3. 修正启动方式
手动执行gitlab-runner run命令时,如果当前所在目录gitlab-runner用户无访问权限(比如你在/root目录下执行启动命令),也会触发该报错。建议直接用系统服务管理runner,不要手动启动:
# 终止手动运行的runner进程 sudo pkill gitlab-runner # 配置服务开机自启并启动 sudo systemctl enable gitlab-runner sudo systemctl start gitlab-runner # 确认服务运行状态 sudo systemctl status gitlab-runner
4. 修正配置文件权限
检查runner全局配置文件的读取权限:
sudo chown root:gitlab-runner /etc/gitlab-runner/config.toml sudo chmod 640 /etc/gitlab-runner/config.toml
以上操作完成后重新推送代码触发流水线即可恢复正常。
内容的提问来源于stack exchange,提问作者Yes
相关产品推荐
相关产品推荐

