我有一个 Drupal 应用程序,它是使用最新版本的 EB CLI 从 Mac 机器部署的,使用 Elastic Beanstalk。存储库是一个普通的 GitLab,不使用 AWS CodeCommit。
rm -rf vendor
不幸的是,如果我没有在运行之前认真地运行 a eb deploy
,它会将四个文件提交到存档中:
1980-01-01 00:00:00 ..... 11 11 ./vendor/grasmash/yaml-expander/scenarios/symfony4/tests
1980-01-01 00:00:00 ..... 9 9 ./vendor/grasmash/yaml-expander/scenarios/symfony4/src
1980-01-01 00:00:00 ..... 11 11 ./vendor/grasmash/yaml-expander/scenarios/symfony2/tests
1980-01-01 00:00:00 ..... 9 9 ./vendor/grasmash/yaml-expander/scenarios/symfony2/src
结果,部署失败,并出现以下错误消息eb-engine.log
:
2022/10/18 10:07:12.498904 [INFO] Running command /bin/sh -c /usr/bin/unzip -q -o /opt/elasticbeanstalk/deployment/app_source_bundle -d /var/app/staging/
2022/10/18 10:07:12.768789 [INFO] finished extracting /opt/elasticbeanstalk/deployment/app_source_bundle to /var/app/staging/ successfully
2022/10/18 10:07:12.778754 [ERROR] An error occurred during execution of command [app-deploy] - [StageApplication]. Stop running the command. Error: chown /var/app/staging/vendor/grasmash/yaml-expander/scenarios/symfony2/src: no such file or directory
该.ebignore
文件与 相同.gitignore
,并且有一行
/vendor
因此从理论上讲,根本不应该添加这四个符号链接。存档中eb deploy
没有其他文件或文件夹。文件的 UID、GID 和模式与其他未部署的文件相同。vendor
vendor
什么原因导致了这种现象?
答案1
我刚刚在 Python 和 Django 应用程序中遇到了类似的问题,其中突然嵌套了一个文件链接node_modules
- 在部署过程中未运行或使用 -no such file or directory
在部署期间导致失败并显示相同的消息。
基于AWS EB CLI 文档,在存在.gitignore
时不使用。我在两个文件中使用了相同的模式,因此我决定直接删除该文件,现在我的应用程序包从 327 MB 减少到只有 24 MB。部署成功。.ebignore
.ebignore
.ebignore
对规则的解释可能与 略有不同.gitignore
,这也许可以解释运行之间的差异eb deploy
。
这并不能完全回答你的问题,为什么它对.ebignore
你不起作用,但你可以尝试删除它,如果你所需要的已经全部覆盖的.gitignore
话。
除此之外,也许你的模式需要根据以下示例进行调整:Git 文档中的 2.2 章 Git 基础 - 记录存储库更改:
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
因此,也许适合您的用例的正确模式是/vendor/
。