[英]How to host an ASP.NET Core Blazor WebAssembly Hosted App on AWS?
[英]How to create AWS code pipleline for EBS to deploy on ASP.NET Core 5.0 with Angular
我有一个 ASP.NET Core 5.0 应用程序和 Angular。我想使用 AWS CodePipeLine (CI / CD) 将此应用程序部署到 EBS Windows 环境。 我试图从 inte.net 资源中获得很多帮助,但没有找到太多帮助。
尝试创建管道但部署失败。
这是我的buildspec.yml
文件:
# AWS CodeBuild spec to build an Elastic Beanstalk artifact for AWS CodePipeline to deploy
version: 0.2
env:
variables:
PROJECT: AtlasWeb
DOTNET_CORE_RUNTIME: 6.0
phases:
install:
runtime-versions:
dotnet: ${DOTNET_CORE_RUNTIME}
nodejs: 16
commands :
- npm install --save-dev @angular-devkit/build-angular
- npm install -g @angular/cli@11.2.19
- dotnet tool install -g Amazon.Lambda.Tools
pre_build:
commands:
- echo Restore started on `date`
- dotnet restore AtlasWeb/AtlasWeb.csproj
- npm install
build:
commands:
- echo Build started on `date`
- dotnet build -c Release
post_build:
commands:
- echo Publish started on `date`
- dotnet publish -c Release -o ./build_output AtlasWeb/AtlasWeb.csproj
我在部署阶段收到此错误:
部署已完成,但有错误:在部署中止期间,某些实例可能已经部署了新的应用程序版本。 为确保所有实例都运行相同的版本,请重新部署适当的应用程序版本。 无法部署应用程序。 在实例 ID“i-0e6eb9c4b3e517a18”上执行命令失败。 中止操作。 [实例:i-0e6eb9c4b3e517a18 ConfigSet:Infra-WriteRuntimeConfig、Infra-EmbeddedPreBuild、Hook-PreAppDeploy、Infra-EmbeddedPostBuild、Hook-EnactAppDeploy、Hook-PostAppDeploy] 命令在实例上失败。 返回代码:1 Output:null。构建期间发生错误:命令挂钩失败部署失败:意外异常
要创建用于将 ASP.NET Core 5.0 和 Angular 应用程序部署到 Elastic Beanstalk 的 AWS CodePipeline,您可以按照以下一般步骤操作:
1:为您的应用程序创建 Elastic Beanstalk 环境。 此环境应配置为运行 ASP.NET Core 5.0 应用程序。
2:为您的应用程序创建一个 CodeCommit 存储库。 此存储库应包含 ASP.NET Core 和 Angular 应用程序的源代码。
3:创建将用于构建和测试您的应用程序的 CodeBuild 项目。 这个项目应该有一个 buildspec 文件,指定在构建过程中要运行的命令,例如“do.net build”和“ng build”。
4:创建一个CodeDeploy应用和部署组。 这将用于将应用程序部署到 Elastic Beanstalk。
5:创建连接您的 CodeCommit 存储库、CodeBuild 项目和 CodeDeploy 应用程序的 CodePipeline。 此管道应配置为在将更改推送到存储库时自动将您的应用程序部署到 Elastic Beanstalk。
6:配置管道后,您可以在您的 Angular 应用程序中添加 CodeCommit 的 webhook 并推送代码。 该管道将自动构建、测试您的应用程序并将其部署到 Elastic Beanstalk。
注意:如果您使用的是 Visual Studio,您还可以使用 AWS Toolkit for Visual Studio 将您的应用程序部署到 Elastic Beanstalk。 该工具包为将应用程序部署到 AWS 提供了一个易于使用的界面,并且可以自动创建必要的 CodePipeline、CodeBuild 和 CodeDeploy 资源。
使用buildspec.yml
中的所需命令构建应用程序后,您需要将 CodeBuild 的 output 工件作为输入传递给 CodePipeline 中的 ElasticBeanstalk 操作。 为了做到这一点, buildspec.yml
需要一个工件部分。
version: 0.2
...
<all your build commands>
...
artifacts:
files:
- '**/*'
您的 Codepipeline 将有一个Source (CodeCommit or any Third party source) -> CodeBuild -> Elastic beanstalk action
。 您应该已经创建了 EB 应用程序和环境。
注意:EB 在 CodePipeline 中有单独的操作,不需要 CodeDeploy 阶段。 CodeDeploy 仅通过 CodePipeline 部署到 EC2/ECS。
对于您看到的错误,这是来自 Elastic Beanstalk 而不是 CodePipeline。 您需要检查实例中的/var/log/eb-activity.log
,或者您可以 go 到 EB 控制台 -> 日志 -> 下载 -> 完整日志并提取 zip。eb eb-activity.log
将包含命令这在给定的实例中失败了,您需要相应地进行故障排除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.