CircleCI使用git-ftp部署FTP时报Commit found错误如何解决
报错原因
这个错误是两个问题叠加导致的:
- YAML语法错误导致后续命令完全未执行
你在command的多行shell脚本块里,给git reset --hard和git ftp push前面加了YAML列表项才用的-前缀,shell无法识别这是有效命令,实际部署流程跑到git ftp init就中断了,你写的push逻辑根本没有被执行。 - git-ftp命令逻辑使用错误
git ftp init仅适用于第一次向完全空白的FTP站点初始化部署的场景,只要FTP服务器上已经存在git-ftp生成的.git-ftp.log版本记录文件,再次执行init就会抛出你看到的fatal错误,提示需要用push命令同步增量变更。你每次CI运行都先执行init,只要第一次部署成功,后续所有执行都会卡在这一步。
另外你配置里的git reset --hard是多余操作,CircleCI的checkout步骤拉取的就是对应提交的干净代码,不需要额外重置。
修复方案
直接用git ftp push的--auto-init参数替换原有init+push的写法即可,这个参数会自动检测FTP端有没有初始化记录:没有就自动执行初始化逻辑,有就直接走增量push,不需要手动拆分两个命令,同时修正YAML语法错误。
修正后的完整配置如下:
version: 2 jobs: deploy: docker: - image: circleci/node:8-browsers working_directory: ~/repo steps: - checkout - run: npm install - run: name: Deploy Master Branch command: | sudo apt-get update sudo apt-get -qq install git-ftp echo "Deploying project ..." git ftp push --auto-init --user ${username} --passwd ${password} ${ftp_location} workflows: version: 2 master-deploy: jobs: - deploy: filters: branches: only: main
部署前确认你已经在CircleCI项目环境变量中正确配置了username/password/ftp_location三个参数,其中ftp_location要写全带目录的完整地址,比如ftp://你的FTP域名/目标部署目录。
内容的提问来源于stack exchange,提问作者busyguy
相关产品推荐
相关产品推荐

