CodePipeline ElasticBeanstalk [错误] 执行命令 [app-deploy] 期间发生错误 - [CheckProcfileForDotNetCoreApplication]
CodePipeline ElasticBeanstalk [ERROR] An error occurred during execution of command [app-deploy] - [CheckProcfileForDotNetCoreApplication]
我已经构建了一个代码管道(源 > 构建 > 部署),但它在部署步骤上失败了。
这是一个 Net Core 3.1 Api 项目。
我检查了 elastic beanstalk 日志,我看到:
2020/07/02 14:14:00.600060 [ERROR] 执行命令 [app-deploy] - [CheckProcfileForDotNetCoreApplication] 期间发生错误。停止 运行 命令。错误:错误统计 /var/app/staging/MyApi/MyApi.dll:没有这样的文件或目录 /var/app/staging/MyApi/MyApi.dll
据我所知,我无法控制 /var/app/staging/ 这是内置于 AWS 的东西?
构建步骤正在运行,所以我不确定这个错误。
我的buildspec.yml是:
version: 0.2
phases:
build:
commands:
- dotnet publish -c release -o ./build_output ./MyApi/MyApi.csproj
artifacts:
files:
- '**/*'
base-directory: 'build_output'
这是“zipfile/build_output”文件夹:
这是 zip 文件的根文件夹:
这些是管道正在使用的构建工件 zip 文件中的文件。错误说它找不到 MyAppName.dll(在图片中重命名为 MyApi)。它在那里,所以我想知道为什么会出现问题。
也许它不喜欢 zip 文件中的文件夹结构 - 见图。
我遇到了同样的问题
在我的例子中,如果解决方案名称和项目名称不同,我在将代码从 Visual Studio 部署到 Beanstalk 时遇到相同的错误,但是当我添加一个与解决方案名称并构建它,我没有收到错误。
我怀疑在部署期间会出现假定 .dll 文件与解决方案名称同名的行为。
警告:这是一种变通方法,而不是解决方案!
在部署失败的项目上,将项目属性/应用程序选项卡中的“程序集名称”更改为缺少的 DLL 的名称(通常是解决方案名称或命名空间的第一个以句点分隔的部分) .
即“SLNNAME”
然后,重新部署您的 beanstalk 应用程序,它应该可以正常工作。
正如 Marcin 正确注意到的那样,“基本目录”的缩进不正确
base-directory: 'build_output'
应该是
base-directory: 'build_output'
正如其他人所指出的,它只查找项目名称 .dll 的第一部分。就我而言,我的项目和程序集名称都是 UC.Web,这在部署期间产生了错误:
Error: error stat /var/app/staging/UC.dll: no such file or directory with file /var/app/staging/UC.dll
我的解决方案是将我的程序集名称从 UC.Web 重命名为简单的 UC,并且部署成功。虽然这是适合所有人的解决方案,但在亚马逊修复此问题之前,它暂时是一种解决方法。
我已经构建了一个代码管道(源 > 构建 > 部署),但它在部署步骤上失败了。
这是一个 Net Core 3.1 Api 项目。
我检查了 elastic beanstalk 日志,我看到:
2020/07/02 14:14:00.600060 [ERROR] 执行命令 [app-deploy] - [CheckProcfileForDotNetCoreApplication] 期间发生错误。停止 运行 命令。错误:错误统计 /var/app/staging/MyApi/MyApi.dll:没有这样的文件或目录 /var/app/staging/MyApi/MyApi.dll
据我所知,我无法控制 /var/app/staging/ 这是内置于 AWS 的东西?
构建步骤正在运行,所以我不确定这个错误。
我的buildspec.yml是:
version: 0.2
phases:
build:
commands:
- dotnet publish -c release -o ./build_output ./MyApi/MyApi.csproj
artifacts:
files:
- '**/*'
base-directory: 'build_output'
这是“zipfile/build_output”文件夹:
这是 zip 文件的根文件夹:
这些是管道正在使用的构建工件 zip 文件中的文件。错误说它找不到 MyAppName.dll(在图片中重命名为 MyApi)。它在那里,所以我想知道为什么会出现问题。
也许它不喜欢 zip 文件中的文件夹结构 - 见图。
我遇到了同样的问题
在我的例子中,如果解决方案名称和项目名称不同,我在将代码从 Visual Studio 部署到 Beanstalk 时遇到相同的错误,但是当我添加一个与解决方案名称并构建它,我没有收到错误。 我怀疑在部署期间会出现假定 .dll 文件与解决方案名称同名的行为。
警告:这是一种变通方法,而不是解决方案!
在部署失败的项目上,将项目属性/应用程序选项卡中的“程序集名称”更改为缺少的 DLL 的名称(通常是解决方案名称或命名空间的第一个以句点分隔的部分) .
即“SLNNAME”
然后,重新部署您的 beanstalk 应用程序,它应该可以正常工作。
正如 Marcin 正确注意到的那样,“基本目录”的缩进不正确
base-directory: 'build_output'
应该是
base-directory: 'build_output'
正如其他人所指出的,它只查找项目名称 .dll 的第一部分。就我而言,我的项目和程序集名称都是 UC.Web,这在部署期间产生了错误:
Error: error stat /var/app/staging/UC.dll: no such file or directory with file /var/app/staging/UC.dll
我的解决方案是将我的程序集名称从 UC.Web 重命名为简单的 UC,并且部署成功。虽然这是适合所有人的解决方案,但在亚马逊修复此问题之前,它暂时是一种解决方法。