GitLab非root自托管Runner提示‘No such file or directory’无法克隆项目
GitLab非root自托管Runner无法克隆项目的问题排查与解决
问题背景
以守护进程方式运行GitLab非root自托管Runner(使用systemd管理),Runner已完成注册,但执行任务时无法克隆项目,报错提示目标目录不存在。
相关配置与日志信息
systemd服务配置
$ cat /etc/systemd/system/gitlab-runner-ansible.service [Unit] Description=GitLab Runner as ansible After=syslog.target network.target ConditionFileIsExecutable=/usr/local/bin/gitlab-runner [Service] StartLimitInterval=5 StartLimitBurst=10 ExecStart=/usr/local/bin/gitlab-runner "run" "--working-directory" "/home/ansible" "--config" "/home/ansible/.gitlab-runner/config.toml" "--service" "gitlab-runner-ansible" "--syslog" "--user" "ansible" Restart=always RestartSec=120 [Install] WantedBy=multi-user.target
Runner注册状态
$ gitlab-runner list Runtime platform arch=amd64 os=linux pid=1206452 revision=de7731dd version=12.1.0 Listing configured runners ConfigFile=/home/ansible/.gitlab-runner/config.toml orc2_production Executor=shell Token=secret-token URL=https://my.gitlab.com/
报错日志
journalctl日志
Apr 19 17:34:28 svko-ilcm03 su[1205544]: (to ansible) root on none Apr 19 17:34:28 svko-ilcm03 su[1205544]: pam_unix(su:session): session opened for user ansible(uid=1001) by (uid=0) Apr 19 17:34:28 svko-ilcm03 su[1205544]: pam_unix(su:session): session closed for user ansible Apr 19 17:34:28 svko-ilcm03 gitlab-runner-ansible[1204663]: WARNING: Job failed: exit status 1 duration=209.648477ms job=82078 project=2705 runner=Psx6ypMS Apr 19 17:34:28 svko-ilcm03 gitlab-runner[1204663]: WARNING: Job failed: exit status 1 duration=209.648477ms job=82078 project=2705 runner=Psx6ypMS Apr 19 17:34:28 svko-ilcm03 gitlab-runner-ansible[1204663]: ERROR: Failed to process runner builds=0 error=exit status 1 executor=shell runner=Psx6ypMS Apr 19 17:34:28 svko-ilcm03 gitlab-runner[1204663]: ERROR: Failed to process runner builds=0 error=exit status 1 executor=shell runner=Psx6ypMS
GitLab网页界面错误
Running with gitlab-runner 12.1.0 (de7731dd) on orc2_production Psx6ypMS Using Shell executor... 00:00 Running on svko-ilcm03... 00:00 bash: line 106: cd: /home/ansible/builds/Psx6ypMS/0/ilcm/orc2: No such file or directory 00:00 ERROR: Job failed: exit status 1
问题原因
核心问题是**ansible用户对/home/ansible目录没有足够的权限**,导致Runner无法在该目录下创建builds子目录及后续项目克隆路径,最终因无法进入目标目录而克隆失败。
解决步骤
修复目录权限
执行命令确保ansible用户拥有/home/ansible的完全控制权:sudo chown -R ansible:ansible /home/ansible sudo chmod -R u+rwx /home/ansible验证权限有效性
切换到ansible用户,手动创建测试目录验证权限:su - ansible mkdir -p /home/ansible/builds/test/0/test/project cd /home/ansible/builds/test/0/test/project若操作无报错,说明权限问题已解决。
重启Runner服务
权限修复后,重启服务使配置生效:sudo systemctl daemon-reload sudo systemctl restart gitlab-runner-ansible.service测试任务执行
在GitLab项目中重新触发CI/CD任务,确认Runner可正常克隆项目并执行后续流程。
内容的提问来源于stack exchange,提问作者Raniere Silva
相关产品推荐
相关产品推荐

