我正在尝试在AWS中设置概念证明CI / CD。我需要建立一个.net mvc项目(不是核心而是标准)。
因此,到目前为止,我认为我们需要定义一个管道,通过源代码获取代码(在我的情况下为github),并将其放入S3
中,然后CodeBuild
进行构建,然后CodeDeploy
部署它。
我发现一些帖子说CodeBuild
尚不支持构建标准.net,因为它没有Windows服务器选项。但是the post已过时,它现在实际上具有Windows选项-请参见下图。
所以我认为它现在可以支持标准的.net构建,但是我很难找到有关它的任何文档。我卡住的地方实际上是在设置buildspec.yml
文件。我不知道如何为标准的.net mvc应用程序设置它。前面的文章介绍了如何创建buildspec.yml
而不是.net内核,因此对我不起作用。
有人可以帮我解决这个问题吗?
还是我真的应该继续设置一个jenkins服务器并从那里步行吗?
答案 0 :(得分:2)
https://aws.amazon.com/blogs/devops/extending-aws-codebuild-with-custom-build-environments-for-the-net-framework/介绍了如何在Windows构建中使用自定义Docker映像。
CodeBuild文档中提供了一些示例:https://docs.aws.amazon.com/codebuild/latest/userguide/sample-windows.html
答案 1 :(得分:1)
Amazon 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
答案 2 :(得分:0)
现在为了自己实现这个目的,周围有一些漏洞,恐怕答案不是黑白的。
AWS CodeBuild确实支持.net构建,但是我强烈建议不要这样做。因为一些问题的时间成本(和痛苦)。
我自己又遇到了另一个错误,即长文件名不受支持,谁知道接下来会发生什么。
即使变通办法也有变通办法,所以让我们面对吧。 对于通过msbuild进行构建的特定目的来说,这不是很好,我感到非常不满。
我的下一个尝试是将构建直接直接自动上载到S3,因此是一个localhost构建和服务器端部署过程。不是我最初的意图。