【问题标题】:Is standard .net supported by AWS CodeBuild?AWS CodeBuild 是否支持标准 .net?
【发布时间】:2019-02-06 20:53:44
【问题描述】:

我正在尝试在 AWS 中设置概念验证 CI/CD。我需要构建一个 .net mvc 项目(不是核心,而是标准)。

所以到目前为止我的想法是我们需要定义一个管道,通过源(在我的情况下是 github)获取代码并将其放入 S3,然后 CodeBuild 构建它,然后 CodeDeploy部署它。

我发现帖子说CodeBuild 尚不支持构建标准.net,因为它没有Windows 服务器选项。但是the post 已经过时了,它现在实际上有 Windows 选项 - 见下图。

所以我认为它现在可以支持标准的 .net 构建,但我很难找到有关它的任何文档。我坚持的地方实际上是设置buildspec.yml 文件。我不知道如何为标准的 .net mvc 应用程序设置它。上述帖子讲述了如何创建 buildspec.yml 但对于 .net 核心,因此不适用于我。

谁能帮我解决这个问题?

或者我真的应该继续设置一个詹金斯服务器然后从那里走吗?

【问题讨论】:

    标签: .net asp.net-mvc aws-code-deploy aws-codepipeline aws-codebuild


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      亚马逊,as of May-2018,支持 Windows 主机,所以是的,这是可能的。将它与Microsoft .NET Framework Build Image 结合起来,我就可以让它工作了。这是一个初步的 buildspec.yml 开始使用:

      version: 0.2
      
      # Assumes the image is microsoft/dotnet-framework:4.7.2-sdk or similar
      phases:
        install:
          commands:
            # Below is the URL for the MSI linked from https://www.iis.net/downloads/microsoft/web-deploy
            - Invoke-WebRequest -OutFile WebDeploy_amd64_en-US.msi https://download.microsoft.com/download/0/1/D/01DC28EA-638C-4A22-A57B-4CEF97755C6C/WebDeploy_amd64_en-US.msi
            - msiexec /i WebDeploy_amd64_en-US.msi /quiet
            # MSIExec will return before it is actually done - 30s seems to work...
            - Start-Sleep 30
        pre_build:
          commands:
            - nuget restore
        build:
          commands:
            - msbuild /P:Configuration=Release /T:Build,Package
      

      【讨论】:

      • 使用提供的构建映像和您提供的 buildspec.yml。获取 nuget 还原。原因:退出状态1也试过把pre_build命令改成“cd Project.Web && nuger restore”
      • *.sln 文件位于我的源目录的根目录中,*.csproj 文件是 ./{ProjectName}/{ProjectName}.csproj - 我在那里没有遇到任何问题。我看到的第一行是:MSBuild auto-detection: using msbuild version '15.9.21.664' from 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin'。
      • @DavidBeckman 你是怎么知道“# Assumes the image is microsoft/dotnet-framework:4.7.2-sdk or similar”的?我找不到有关如何构建“aws/codebuild/windows-base/*”图像的任何信息。
      • @SamSippe 使用代码构建时,您可以指定构建容器来自哪个映像。此脚本,特别是安装命令,假定图像来自 Microsoft。如果您使用的是不同的容器镜像,则设置镜像需要不同的先决条件(可能没有)。
      【解决方案3】:

      现在自己绕了几个漏洞试图实现这一点,恐怕答案不是非黑即白。

      AWS CodeBuild 确实支持 .net 构建,但我强烈建议不要这样做,因为一些问题的时间成本(和痛苦)。

      1. 查找和理解 buildspec 配置很麻烦 here
      2. 修复缺少的引用,(例如缺少Microsoft.WebApplication.targets)。

      我自己遇到了另一个不支持长文件名的错误,谁知道接下来会发生什么。

      即使是变通办法也有变通办法,所以让我们面对现实吧。 它对于通过 msbuild 构建的特定目的不是很好,这对我来说是一个很大的不满。

      我的下一个尝试是自动将构建直接上传到 S3,因此一个 localhost 构建和服务器端部署过程。不是我最初的打算。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-09
        • 1970-01-01
        • 2019-06-08
        • 1970-01-01
        • 1970-01-01
        • 2012-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多