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

Gitlab自动部署时git pull提示已更新且无法运行composer命令问题

结论
  • SSH连接本身正常:从运行日志可见SSH私钥添加成功,远程服务器的git pull命令已成功返回结果,说明SSH认证、链路连接均无异常。
故障原因

你的脚本逻辑存在错误:

  • ssh -p 28785 test@test "git checkout development && git pull" 仅将引号内的两条命令在远程服务器执行,SSH会话执行完命令后自动退出,后续cd server、composer i等所有命令均在GitLab CI Runner的本地容器中执行,而非目标远程服务器,自然找不到对应项目目录,无法正常运行后续操作。
  • 从运行日志的SSH命令输出行可以看到命令被截断,也可验证SSH仅执行了单独的连接、后续命令未在远程运行的问题。
修复方案

将所有需要在远程服务器执行的命令全部整合到同一条SSH调用中,参考写法如下:

deploy_staging:
  type: deploy
  environment:
    name: staging
    url: test.ro
  script:
    - ssh -p 28785 test@test << 'EOF'
      # 替换为你服务器上项目的实际绝对路径,避免登录后默认目录错误
      cd /www/your/project/path
      git checkout development
      git pull
      cd server
      composer i
      composer optimize
      php artisan migrate
      cd ../client
      npm i
      npm run dev
EOF
  only:
    - development

额外注意事项:

  • 提前确认SSH_PRIVATE_KEY对应的公钥已添加到目标服务器test用户的~/.ssh/authorized_keys文件中
  • 确认服务器上项目目录的权限属于test用户,避免权限不足导致命令执行失败

内容的提问来源于stack exchange,提问作者KoulJak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:36:05