如何使用 AWS CodePipeline 将 dotnet 核心应用程序部署到 ElasticBeanstalk

How to deploy a dotnet core app using AWS CodePipeline to ElasticBeanstalk

我正在尝试构建一个基本的 dotnet 核心应用程序并使用我在 AWS 中可用的默认工具部署它。我目前正在执行以下步骤:

  1. CodeCommit 中的存储库
  2. Checkin 在 Ubuntu 图像 "aws/codebuild/dot-net:core-2.1" 上触发 CodeBuild 构建步骤,其中 运行 是 yml 文件(它创建了我实际需要的正确文件 运行 网络应用程序):

    version: 0.2
    
    phases:
    
    build:
    commands:
      - dotnet restore CMS/CMS.csproj
      - dotnet build CMS/CMS.csproj
      - dotnet publish CMS/CMS.csproj -o site
     artifacts:
      files:
        - CMS/site/**/*
        - CMS/aws-windows-deployment-manifest.json
    

aws-windows-部署-manifest.json:

{
    "manifestVersion": 1,
    "deployments": {
        "aspNetCoreWeb": [{
                "name": "CMS",
                "parameters": {
                    "appBundle": "./site",
                    "iisPath": "/",
                    "iisWebSite": "Default Web Site"
                }
            }
        ]
    }
}
  1. CodeDeploy 获取工件并将它们发布到配置为使用 windows 的弹性 beanstalk 应用程序。目前运行正在使用默认应用程序。

它 运行 每一步都很好,我在整个过程中都得到了绿色的复选标记,但是当我导航到 EB 实例时,原始站点仍然显示,表明我的应用程序尚未部署。有什么我想念的吗?

我真的希望我能够在不需要修改构建环境的情况下从签入到完成部署应用程序,至少现在是这样。

这是我为从 CodeBuild 创建 beanstalk 包而写的 buildspec.yml。

version: 0.2

phases:

  build:
    commands:
      - dotnet restore EbCiTest/EbCiTest.csproj
      - dotnet build EbCiTest/EbCiTest.csproj
      - dotnet publish EbCiTest/EbCiTest.csproj -o ./staging/app
      - cp ./EbCiTest/aws-windows-deployment-manifest.json ./EbCiTest/staging/.
artifacts:
  files:
    - '**/*'
  base-directory: 'EbCiTest/staging'

我认为您遇到的问题是正在创建的 zip 文件包含文件的完整路径,因此 aws-windows-deployment-manifest.json 不在 zip 文件的根目录中.我建议将所有内容复制到暂存文件夹,然后使用该暂存文件夹作为 zip 文件的根目录。