Windows下GitLab Shell Runner配置Bash时锁配置文件失败问题
问题排查与解决方案
核心原因
你遇到的Git锁文件错误,本质是GitLab Runner(Windows原生程序)与Bash环境的路径格式不兼容:
- GitLab Runner作为Windows进程,仅识别Windows风格路径(如
C:\Gitlab-Runner\builds\),但你配置了Cygwin风格的/cygdrive/c/...路径 - 当Runner调用Windows版本的Git时,Git无法解析Cygwin路径,导致锁文件操作失败,即使文件实际存在也会抛出错误
解决步骤
1. 修改config.toml的路径配置
将builds_dir和cache_dir改为Windows原生路径,支持两种写法:
- 双反斜杠转义格式:
concurrent = 1 check_interval = 0 [session_server] session_timeout = 1800 [[runners]] name = "Window's VM" url = <gitlab url> token = <token> executor = "shell" shell = "bash" builds_dir="C:\\Gitlab-Runner\\builds\\" cache_dir="C:\\Gitlab-Runner\\cache\\" [runners.custom_build_dir] [runners.cache] [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure]
- 正斜杠格式(推荐,无需转义):
concurrent = 1 check_interval = 0 [session_server] session_timeout = 1800 [[runners]] name = "Window's VM" url = <gitlab url> token = <token> executor = "shell" shell = "bash" builds_dir="C:/Gitlab-Runner/builds/" cache_dir="C:/Gitlab-Runner/cache/" [runners.custom_build_dir] [runners.cache] [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure]
2. 修复.gitlab-ci.yml中的路径写法
Bash环境下反斜杠是转义字符,需将Windows风格路径改为Unix风格:
stages: - build run-script: stage: build tags: - sweet script: - ./script0.sh -s ./another_dir/argument_file - ./script1.sh
3. 重启GitLab Runner服务
在管理员权限的Windows命令提示符中执行:
gitlab-runner stop gitlab-runner start
也可通过Windows服务管理器直接重启gitlab-runner服务
4. 路径映射验证(可选)
若使用Git Bash,可在Bash中执行以下命令,确认路径映射正常:
cd /cygdrive/c/Gitlab-Runner/builds/ ls
能正常列出目录文件则说明映射无问题
内容的提问来源于stack exchange,提问作者LukeDev
相关产品推荐
相关产品推荐

