You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab提交代码后pipeline报错无法读取用户名,Laravel Deployer部署cPanel失败

问题解决方案

报错根因

报错核心是cPanel服务器执行GitLab私有项目克隆时,使用HTTPS协议未提供有效身份验证凭据,导致身份校验失败返回128退出码。

修复步骤

方法1:切换为SSH协议拉取代码(推荐)

  • 登录cPanel服务器,切换到部署用户sfd,执行命令生成SSH密钥:
    ssh-keygen -t ed25519 -C "cpanel-deploy-key"
    
    全程回车不设置密码,生成后复制~/.ssh/id_ed25519.pub文件的全部内容。
  • 打开GitLab对应项目,依次进入「设置」-「仓库」-「部署密钥」,粘贴刚才复制的公钥,按需勾选推送权限后保存。
  • 修改deploy.php中的仓库地址为SSH格式:
    'repository' => 'git@gitlab.com:n1063/suntop/nas-project.git',
    

方法2:HTTPS地址绑定访问令牌

  • 登录GitLab账号,进入「个人设置」-「访问令牌」,创建一个勾选read_repository权限的个人访问令牌,生成后复制保存令牌值。
  • 修改deploy.php中的仓库地址为带认证的HTTPS格式,建议通过环境变量读取敏感信息避免明文泄露:
    // 直接填写(不推荐,会泄露凭据)
    'repository' => 'https://<你的GitLab用户名>:<生成的访问令牌>@gitlab.com/n1063/suntop/nas-project.git',
    // 推荐通过CI变量配置
    'repository' => env('DEPLOY_REPO_URL'),
    
    对应将DEPLOY_REPO_URL变量添加到GitLab项目的CI/CD变量中即可。

方法3:使用upload策略跳过服务器克隆(适配CI场景)

你当前gitlab-ci.yml的deploy步骤已经配置了-s upload参数,该策略会直接将CI环境中已经构建好的代码(含vendor、node_modules等依赖)上传到服务器,不需要服务器端执行git clone操作。

  • 确认你的Laravel Deployer版本支持upload策略
  • 检查deploy.php中没有强制配置git clone相关的部署策略,配置正确后即可自动跳过服务器克隆步骤,直接规避身份验证问题。

额外配置修正

你当前的GitLab Runner配置存在错误,[[runners]]下的url字段应该填写GitLab实例地址https://gitlab.com/,而非你的项目地址,否则Runner无法正常连接GitLab获取任务:

[[runners]]
  name = "DESKTOP-1OOOT34"
  url = "https://gitlab.com/"
  token = "mytoken"
  executor = "shell"
  shell = "powershell"
  # 其余配置保持不变

内容的提问来源于stack exchange,提问作者Faisal Faiz Michankhel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:24:01