使用AWS CodeBuild

时间:2018-04-11 22:56:25

标签: docker aws-codebuild

我开始使用AWS的CI / CD功能。到目前为止,我一直在Windows Server 2016上基于microsoft / windowsservercore映像在本地创建docker镜像,并手动将其推送到ECR(amazon容器注册表)。

此时,我并没有尝试在CodeBuild中编译应用程序。我只是试图建立容器。在本地,二进制文件位于子目录中并复制到容器中。

CodeBuild项目失败并显示错误: 图像操作系统" windows"不能在这个平台上使用

我非常确定,因为构建环境是基于Linux的。

是否有人知道是否可以为AWS创建支持构建Windows容器映像的自定义构建环境?

5 个答案:

答案 0 :(得分:3)

AWS CodeBuild不支持Windows构建环境,但它正在开发中。您可以sign up here获取有关Windows的CodeBuild支持的通知。

然而,CodeBuild在Docker上运行所有构建。 Microsoft尚不支持在Windows Docker容器中构建Docker镜像(请参阅this GitHub issue for details)。

答案 1 :(得分:1)

正如Clare的回答所指出的,Windows Server平台目前不支持Docker-in-Docker(DIND),AWS CodeBuild仅在Docker中运行构建;不直接在操作系统之上。请注意,AWS CodeBuild support for Windows Server is Generally Available now

-

这不是AWS CodeBuild,但您可以使用一些服务在AWS上构建自己的自动化容器构建系统。以下是高级别的情况:

  1. 使用亚马逊机器映像(AMI)部署新的EC2实例“ Windows Server 2016 with Containers
  2. 将新代码更改提交给Git
  3. 将更改推送到AWS CodeCommit存储库
  4. CodeCommit triggers a Lambda function
  5. Lambda函数调用AWS Systems Manager - Run Command
  6. Run Command calls the AWS-RunPowerShellScript documenttargeting the Window Server instance(即通过标记或实例ID)
  7. PowerShell脚本克隆CodeCommit存储库,构建容器映像,并推送到Elastic Container Registry(ECR)
  8. 您需要确保EC2实例具有access to AWS Systems Manager through their IAM Instance Profile。我还没有把它付诸实践,但它已经在我的积压工作了一段时间。随意试一试。

答案 2 :(得分:0)

由于此答案排在我的Google搜索的顶部,并且已经过时,因此应注意,截至2018年5月25日,AWS确实为代码构建提供了Windows映像。

答案 3 :(得分:0)

此功能在CodeBuild中尚不可用。

答案 4 :(得分:0)

尝试一下。它使用由Lambda触发的AWS Step Function来协调短暂的EC2实例,以使用AWS Code Pipeline自定义操作构建Windows容器。

这是从一个AWS代码示例中获取的,但是我贡献并提供了一些与管道运行上下文相关的变量作为环境变量提供给EC2实例,以防您的构建脚本需要诸如管道执行ID之类的东西。

https://github.com/aws-samples/aws-codepipeline-custom-action

该文章的博客文章位于https://aws.amazon.com/blogs/devops/building-windows-containers-with-aws-codepipeline-and-custom-actions/