Подготовка пользовательского изображения Docker на AWS CodeBuild занимает очень много времени - PullRequest
0 голосов
/ 26 мая 2020

My Dockerfile:

FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2016
COPY AWSCLIV2.msi .
RUN Start-Process msiexec.exe -Wait -ArgumentList '/I AWSCLIV2.msi /quiet /qn /norestart /log awscli.log'
RUN rm AWSCLIV2.msi

Моя среда CodeBuild должна иметь возможность создавать проект. NET Framework, а также использовать AWS CLI. Из-за ограничений у меня может быть только один этап CodeBuild. Я использую sh для ECR образа docker, созданного с использованием указанного выше файла Docker, и настраиваю среду CodeBuild для использования этого образа. Однако подготовка занимает ~ 10 минут.

CodeBuild обеспечивает кеширование, которое длится всего ~ 15 минут, что бесполезно для более редких сборок. Я также нашел это решение, которое другие связывали с https://github.com/aws/aws-codebuild-docker-images/issues/26#issuecomment -370177343 , но я не уверен, как его можно применить к Windows контейнерам.

Если у кого-то есть указатели на уменьшение время подготовки, я был бы очень признателен.

1 Ответ

0 голосов
/ 27 мая 2020

Windows изображений большие, поэтому время подготовки, которое включает время, необходимое для загрузки настраиваемого образа в экземпляр CodeBuild, будет относительно большим.

Есть два подхода, которые могут помочь:

  1. Используйте образы, предоставленные CodeBuild, для среды сборки, так как последние версии этих образов предварительно кэшируются на серверах сборки.
  2. Используйте базовый уровень для настраиваемого образа, как и этот образа CodeBuild, чтобы можно было повторно использовать базовый уровень и не требовалось времени на загрузку. например:

    • Для Microsoft Windows используйте контейнер Windows с ОС контейнера версии microsoft / windowsservercore: 10.0.x (например, microsoft / windowsservercore: 10.0.14393.2125). Ссылка
...