GitLab项目迁移后git archive远程连接超时问题求助
问题排查与解决方案
1. 先确认Runner网络可达性
登录Runner所在服务器,执行以下命令测试网络连通性:
ping new-gitlab.com telnet new-gitlab.com 443 curl -I https://new-gitlab.com
如果以上命令超时或失败,说明Runner所在环境的防火墙、安全组或网络策略禁止了对新GitLab的HTTPS(443端口)访问,需要开放对应出站规则。
2. 修正curl命令的路径问题
你当前的curl命令中,下载的tar包内文件存放在build-scripts-master/子目录下,直接指定.pre-build.sh会导致找不到文件,修正后的命令:
curl -L https://new-gitlab.com/build-automation/build-scripts/-/archive/master/build-scripts-master.tar | tar -xO build-scripts-master/.pre-build.sh > .pre-build.sh && chmod +x .pre-build.sh && . .pre-build.sh
若目标仓库为私有,需在URL中加入拥有read_repository权限的Personal Access Token(PAT):
curl -L https://<你的PAT>@new-gitlab.com/build-automation/build-scripts/-/archive/master/build-scripts-master.tar | tar -xO build-scripts-master/.pre-build.sh > .pre-build.sh && chmod +x .pre-build.sh && . .pre-build.sh
3. 改用Git HTTP协议执行git archive
既然新GitLab仅支持HTTP,将git archive的远程地址改为HTTPS格式,配合认证信息使用:
. <(git archive --remote=https://<你的PAT>@new-gitlab.com/build-automation/build-scripts.git HEAD .pre-build.sh | tar -xO)
如果是在GitLab CI环境中,推荐使用预定义变量$CI_JOB_TOKEN代替PAT,安全性更高:
. <(git archive --remote=https://gitlab-ci-token:$CI_JOB_TOKEN@new-gitlab.com/build-automation/build-scripts.git HEAD .pre-build.sh | tar -xO)
4. 检查新GitLab仓库访问权限
确保当前CI作业使用的身份(PAT/CI_JOB_TOKEN)拥有目标仓库build-automation/build-scripts的读取权限,否则会出现访问被拒绝(可能表现为超时或403错误)。
内容的提问来源于stack exchange,提问作者user1728730
相关产品推荐
相关产品推荐

