部署失败,并显示“构建项目时出错:构建挂接失败,状态代码为1”
本文介绍了Adobe Commerce on cloud infrastructure问题的原因和解决方案,该问题导致部署过程的构建阶段失败,并且错误消息概述为: 构建项目错误:构建挂接失败,状态代码为1。
描述
环境
云基础架构上的Adobe Commerce,所有版本
问题/症状
- 在构建阶段部署失败。
- 错误日志结尾为: 生成项目时出错:生成挂接失败,状态代码为1。 已中止生成。
- 部署是手动触发的,或通过合并、推送或同步触发。
重现问题的步骤:
手动触发部署,或通过执行环境的合并、推送或同步来触发部署。
预期结果:
已成功完成部署。
实际结果:
- 构建阶段失败,并且整个部署过程陷入停滞。
- 在部署错误日志中,错误消息结尾为: 生成项目时出错:生成挂接失败,状态代码为1。 已中止生成。
原因
错误是一般失败消息。 实际原因在日志中较早出现。 常见原因包括:
- 没有可用的存储空间
- ECE工具配置不正确
- 您尝试应用的修补程序与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上,则应按如下方式定义生成挂接:# 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一文。
2.通过运行以下命令,确保composer.lock文件中存在ECE-tools软件包:
grep '"name": "magento/ece-tools"' composer.lock
如果指定这两个参数,则响应将类似于以下示例:
"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 1W:W:W: build...E: Error building project: The build hook failed with status code 1. Aborted build.
这些错误消息表示您尝试应用的修补程序是为其他Adobe Commerce版本创建的,或者与您的自定义项或以前应用的修补程序冲突。 尝试解决冲突或联系Adobe Commerce支持。
扩展是否导致了问题?
如果自定义扩展阻止环境成功构建,您将会看到部署日志中提到的自定义模块名称,以及此模块导致的特定冲突。 解决冲突或联系扩展开发人员以获取解决方案。
确保应用更改
提交并推送更改。 这将自动触发部署。