部署失败,并显示“构建项目时出错:构建挂接失败,状态代码为1”
本文介绍了Adobe Commerce on cloud infrastructure问题的原因和解决方案,该问题导致部署过程的构建阶段失败,并且错误消息摘要为: “错误构建项目:构建挂接失败,状态代码为1”。
受影响的产品和版本
- 云基础架构上的Adobe Commerce,所有版本
问题
重现步骤:
手动触发部署,或通过执行环境的合并、推送或同步来触发部署。
预期的结果:
已成功完成部署。
实际结果:
- 构建阶段失败,并且整个部署过程陷入停滞。
- 在部署错误日志中,错误消息结尾为: "构建项目时出错:构建挂接失败,状态代码为1。 已中止生成“。”
原因
环境构建失败的原因有多种。 通常,在部署日志中,您会看到一条较长的错误消息,其中第一部分将更具体说明原因,结论为 "构建项目时出错:构建挂接失败,状态代码为1。 已中止生成“。”
详细了解第一个问题特定部分将有助于您识别问题。 下面是一些最常见的问题,下一部分将为其提供解决方案:
- 没有可用的存储空间。
- ECE-Tools配置不正确。
- 您尝试应用的修补程序与Adobe Commerce版本不兼容,或者与应用的其他修补程序或自定义设置冲突。
- 自定义模块代码问题导致无法成功构建。
解决方案
- 检查以确保有足够的存储空间。 有关如何检查可用空间的信息,请参阅使用CLI检查云环境上的磁盘空间一文。 您可以考虑清除日志目录和/或增加磁盘空间。
- 确保ECE-Tools配置正确。
- 检查问题是否由修补程序引起。 解决冲突或联系Adobe Commerce支持。 有关详细信息,请参阅下文。
- 检查是否是由自定义扩展导致的问题。 解决冲突或联系扩展开发人员以获取解决方案。
以下段落提供了一些更多详细信息。
清理日志和/或增加空间
要考虑清理的目录:
var/log
var/report
var/debug/
var
有关如何在云基础架构的Adobe Commerce上增加磁盘空间入门计划架构的详细信息,请参阅增加云上集成环境的磁盘空间。 相同的说明可用于在云基础架构上增加Adobe Commerce的空间。专业规划架构集成环境。 对于Pro Production/Staging,您需要向Adobe Commerce支持提交票证,并请求增加磁盘空间。 但受Platform监控。 但通常情况下,您无需在Pro体系结构的测试/生产中处理此事宜,因为Adobe Commerce会为您监控这些参数,并提醒您和/或根据合同采取行动。
确保ECE工具配置正确
-
确保在
magento.app.yaml
文件中正确定义了生成挂接。 如果您在Adobe Commerce 2.2.X上,则构建挂接应定义如下:code language-yaml # We run build hooks before your application has been packaged. build: | php ./vendor/bin/ece-tools build # We run deploy hook after your application has been deployed and started. deploy: | php ./vendor/bin/ece-tools deploy
请参考升级到ece-tools一文。
-
通过运行以下命令,确保
composer.lock
文件中存在ECE-tools软件包:code language-bash grep '"name": "magento/ece-tools"' composer.lock
如果指定这两个参数,则响应将类似于以下示例:
bash "name": "magento/ece-tools", "version": "2002.0.20",
请参阅升级到ece-tools文章以供参考。
修补程序是否导致该问题?
如果所应用的修补程序阻止环境成功构建,则会在部署日志中看到与以下内容类似的内容:
%patch_name%.composer.patch
[2019-02-19 18:12:59] CRITICAL:
....
[2019-02-19 18:12:59] CRITICAL: Command git apply --check --reverse /app/m2-hotfixes/%patch_name%.composer.patch returned code 1
...
W:
W: Command git apply --check --reverse /app/m2-hotfixes/%patch_name%.composer.patch returned code 1
W:
W:
W: build
...
E: Error building project: The build hook failed with status code 1. Aborted build.
这些错误消息表示您尝试应用的修补程序是为其他Adobe Commerce版本创建的,或者与您的自定义项或以前应用的修补程序冲突。 尝试解决冲突或联系Adobe Commerce支持。
扩展是否导致了问题?
如果自定义扩展阻止环境成功构建,您将会看到部署日志中提到的自定义模块名称,以及此模块导致的特定冲突。 解决冲突或联系扩展开发人员以获取解决方案。
确保应用更改
提交并推送更改。 这将自动触发部署。