Construções de cache para melhorar o desempenho - AWS CodeBuild

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Construções de cache para melhorar o desempenho

Você pode economizar tempo quando seu projeto é compilado usando um cache. Um cache pode armazenar partes reutilizáveis do seu ambiente de build e usá-las em vários builds. O projeto de compilação pode usar um dos dois tipos de armazenamento em cache: Amazon S3 ou local. Se usar um cache local, você deverá escolher um ou mais dos três modos de cache: cache de origem, cache de camada do Docker e cache personalizado.

nota

O modo de cache de camada do Docker está disponível somente para o ambiente Linux. Se você escolher esse modo, deverá executar sua compilação no modo privilegiado. CodeBuild projetos com modo privilegiado concedem ao contêiner acesso a todos os dispositivos. Para obter mais informações, consulte Runtime privilege and Linux capabilities no site de documentação do Docker.

Armazenamento em cache do Amazon S3

O armazenamento em cache do Amazon S3 armazena o cache em um bucket do Amazon S3 que está disponível em vários hosts de compilação. Esta é uma boa opção para artefatos de compilação pequenos a intermediários que são mais caras para criar do que para baixar. Esta não é a melhor opção para artefatos de compilação grandes porque sua transferência na rede pode ser muito demorada, o que pode afetar o desempenho da compilação. Também não é a melhor opção se você usa camadas do Docker.

Armazenamento em cache local

O armazenamento em cache local armazena um cache localmente em um host de compilação que está disponível somente para esse host de compilação. Esta é uma boa opção para artefatos de compilação grandes a intermediários porque o cache fica imediatamente disponível no host de compilação. Essa não é a melhor opção se suas compilações são pouco frequentes. Isso significa que o desempenho da compilação não é afetado pelo tempo de transferência na rede.

Se optar por armazenamento em cache local, você deverá escolher um ou mais dos seguintes modos de cache:

  • O modo de cache de origem armazena em cache os metadados do Git para origens principal e secundária. Depois que o cache é criado, as compilações subsequentes extraem somente a alteração entre as confirmações. Esse modo é uma boa opção para projetos com um diretório de trabalho limpo e uma origem que seja um grande repositório Git. Se você escolher essa opção e seu projeto não usar um repositório Git (AWS CodeCommit, GitHub, GitHub Enterprise Server ou Bitbucket), a opção será ignorada.

  • O modo de cache da camada do Docker armazena as camadas do Docker existentes. Esse modo é uma boa opção para projetos que compilam ou extraem grandes imagens do Docker. Ele pode impedir os problemas de desempenho causados pela extração de grandes imagens do Docker da rede.

    nota
    • Só é possível usar um cache de camada do Docker no ambiente Linux.

    • O sinalizador privileged deve ser definido para que o projeto tenha as permissões necessárias do Docker.

      Por padrão, o daemon do Docker está habilitado para não-compilações. VPC Se você quiser usar contêineres do Docker para VPC compilações, consulte Runtime Privilege e Linux Capabilities no site do Docker Docs e ative o modo privilegiado. Além disso, o Windows não é compatível com o modo privilegiado.

    • Você deve considerar as implicações de segurança antes de usar um cache de camada do Docker.

  • O modo de cache personalizado armazena em cache os diretórios que você especificar no arquivo buildspec. Esse modo é uma boa opção quando o cenário de compilação não é adequado para um dos dois outros modos de cache local. Se você usar um cache personalizado:

    • Somente diretórios pode ser especificado para o armazenamento em cache. Não é possível especificar arquivos individuais.

    • Symlinks são usados para fazer referência a diretórios armazenados em cache.

    • Os diretórios em cache são vinculados à sua compilação antes que ela faça download de suas origens do projeto. Itens armazenados em cache substituem itens de origem se tiverem o mesmo nome. Os diretórios são especificados usando caminhos de cache no arquivo buildspec. Para obter mais informações, consulte Sintaxe de buildspec.

    • Evite nomes de diretório iguais na origem e no cache. Os diretórios armazenados em cache local podem substituir ou excluir o conteúdo de diretórios no repositório de origem que tenham o mesmo nome.

nota

O armazenamento em cache local não é compatível com o tipo de ambiente LINUX_GPU_CONTAINER me o tipo de computação BUILD_GENERAL1_2XLARGE. Para obter mais informações, consulte Modos e tipos de computação do ambiente de compilação.

nota

O cache local não é suportado quando você configura CodeBuild para trabalhar com umVPC. Para obter mais informações sobre como usar VPCs com CodeBuild, consulteUse AWS CodeBuild com a Amazon Virtual Private Cloud.

Especificar um cache local

Você pode usar AWS CLI o console ou AWS CloudFormation para especificar um cache local. SDK Para obter mais informações sobre o armazenamento em cache local, consulteArmazenamento em cache local.

Especificar o armazenamento em cache local (CLI)

Você pode usar o --cache parâmetro no AWS CLI para especificar cada um dos três tipos de cache local.

  • Para especificar um cache de origem:

    --cache type=LOCAL,mode=[LOCAL_SOURCE_CACHE]
  • Para especificar um cache de camada do Docker:

    --cache type=LOCAL,mode=[LOCAL_DOCKER_LAYER_CACHE]
  • Para especificar um cache personalizado:

    --cache type=LOCAL,mode=[LOCAL_CUSTOM_CACHE]

Para obter mais informações, consulte Criar um projeto de compilação (AWS CLI).

Especificar o armazenamento em cache local (console)

Você especifica um cache na seção Artifacts (Artefatos) do console. Em Tipo de cache, selecione Amazon S3 ou Local. Se você optar por Local, selecione uma ou mais das três opções de cache local.

Especifique um cache local escolhendo uma ou mais das três opções de cache local.

Para obter mais informações, consulte Criar um projeto de compilação (console).

Especificar o armazenamento em cache local (AWS CloudFormation)

Se você usa AWS CloudFormation para especificar um cache local, na Cache propriedade, forType, especifiqueLOCAL. O exemplo de AWS CloudFormation código YAML formatado a seguir especifica todos os três tipos de cache local. Você pode especificar qualquer combinação de tipos. Se você usar um cache de camada do Docker, em Environment, defina PrivilegedMode como true e Type como LINUX_CONTAINER.

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: <service-role> Artifacts: Type: S3 Location: <bucket-name> Name: myArtifact EncryptionDisabled: true OverrideArtifactName: true Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Certificate: <bucket/cert.zip> # PrivilegedMode must be true if you specify LOCAL_DOCKER_LAYER_CACHE PrivilegedMode: true Source: Type: GITHUB Location: <github-location> InsecureSsl: true GitCloneDepth: 1 ReportBuildStatus: false TimeoutInMinutes: 10 Cache: Type: LOCAL Modes: # You can specify one or more cache mode, - LOCAL_CUSTOM_CACHE - LOCAL_DOCKER_LAYER_CACHE - LOCAL_SOURCE_CACHE
nota

Por padrão, o daemon do Docker está habilitado para não-compilações. VPC Se você quiser usar contêineres do Docker para VPC compilações, consulte Runtime Privilege e Linux Capabilities no site do Docker Docs e ative o modo privilegiado. Além disso, o Windows não é compatível com o modo privilegiado.

Para obter mais informações, consulte Criar um projeto de compilação (AWS CloudFormation).