Creazioni di cache per migliorare le prestazioni - AWS CodeBuild

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazioni di cache per migliorare le prestazioni

Durante la creazione del progetto è possibile risparmiare tempo utilizzando una cache. Una cache memorizza parti riutilizzabili dell'ambiente di compilazione e le utilizza su più compilazioni. Il tuo progetto di build può utilizzare uno dei due tipi di caching: Amazon S3 o locale. Se utilizzi una cache locale, devi scegliere una o più delle tre modalità di cache disponibili: cache delle origini, cache di livello Docker e cache personalizzata.

Nota

La modalità cache di livello Docker è disponibile solo per l'ambiente Linux. Se scegli questa modalità, devi eseguire la build in modalità privilegiata. CodeBuild la modalità privilegiata dei progetti a cui è stata concessa la modalità privilegiata concede al contenitore l'accesso a tutti i dispositivi. Per ulteriori informazioni, vedere Privilegi di runtime e funzionalità Linux sul sito Docker Docs.

Memorizzazione nella cache di Amazon S3

Il caching di Amazon S3 archivia la cache in un bucket Amazon S3 disponibile su più host di build. Questa è una buona opzione per artefatti di build di piccole e medie dimensioni che sono più costosi da creare che da scaricare. Non è invece l'opzione migliore per artefatti di grandi dimensioni, il cui trasferimento sulla rete può richiedere tempi prolungati con un conseguente impatto sulle prestazioni delle build. Inoltre, non è l'opzione migliore se si utilizzano i livelli Docker.

Caching locale

Questa modalità archivia la cache in locale su un host di compilazioni disponibile solo per tale host. Questa è una buona opzione per gli artefatti di build di medie e grandi dimensioni perché la cache è immediatamente disponibile sull'host di build. Questa non è l'opzione migliore se le compilazioni avvengono raramente. Ciò significa che il trasferimento su rete non influisce sulle prestazioni delle compilazioni.

Se decidi di optare per il caching locale, devi scegliere una o più delle seguenti modalità cache:

  • La modalità cache delle origini memorizza i metadati Git per origini primarie e secondarie. Dopo la creazione della cache, le compilazioni successive estraggono solo le modifiche tra i commit. Questa modalità rappresenta una scelta valida per progetti con una directory di lavoro pulita e un'origine costituita da un repository Git di grandi dimensioni. Se scegli questa opzione e il tuo progetto non utilizza un repository Git (AWS CodeCommit, GitHub, GitHub Enterprise Server o Bitbucket), l'opzione viene ignorata.

  • La modalità cache di livello Docker memorizza i livelli Docker esistenti. Rappresenta la soluzione ideale per progetti che prevedono la creazione o l'estrazione di immagini Docker di grandi dimensioni. Può inoltre prevenire eventuali problemi di prestazioni causati dall'estrazione di immagini Docker di grandi dimensioni dalla rete.

    Nota
    • La cache di livello Docker può essere utilizzata solo in ambiente Linux.

    • È necessario impostare il flag privileged in modo che il progetto disponga delle autorizzazioni Docker richieste.

      Per impostazione predefinita, il daemon Docker è abilitato per le versioni non compilate. VPC Se desideri utilizzare i contenitori Docker per le VPC build, consulta Runtime Privilege e Linux Capabilities sul sito Web di Docker Docs e abilita la modalità privilegiata. Inoltre, Windows non supporta la modalità privilegiata.

    • Prima di utilizzare una cache di livello Docker, è consigliabile considerare le implicazioni per la sicurezza.

  • La modalità cache personalizzata memorizza le directory specificate nel file di specifiche di compilazione. Rappresenta una buona scelta se lo scenario di compilazione non è idoneo per nessuna delle altre due modalità di cache locale. Se utilizzi una cache personalizzata:

    • Puoi specificare per il caching solo le directory. Non puoi specificare singoli file.

    • Per fare riferimento alle directory memorizzate nella cache si utilizzano i symlink.

    • Le directory memorizzate nella cache vengono collegate alla compilazione prima del download delle origini del progetto. Gli elementi memorizzati nella cache sostituiscono gli elementi di origine se hanno lo stesso nome. Le directory vengono specificate utilizzando i percorsi di cache nel file di specifiche di compilazione. Per ulteriori informazioni, consulta Sintassi buildspec.

    • Evitare nomi di directory uguali nell'origine e nella cache. Le directory memorizzate nella cache locale possono sovrascrivere o eliminare il contenuto delle directory nel repository di origine con lo stesso nome.

Nota

La memorizzazione nella cache locale non è supportata con il tipo di LINUX_GPU_CONTAINER ambiente e il tipo di BUILD_GENERAL1_2XLARGE elaborazione. Per ulteriori informazioni, consulta Modi e tipi di calcolo dell'ambiente di creazione.

Nota

La memorizzazione nella cache locale non è supportata quando si configura l'utilizzo CodeBuild di un. VPC Per ulteriori informazioni sull'utilizzo di VPCs with CodeBuild, vedereUtilizzo AWS CodeBuild con Amazon Virtual Private Cloud.

Specificare una cache locale

È possibile utilizzare AWS CLI la console o AWS CloudFormation specificare una cache locale. SDK Per ulteriori informazioni sulla memorizzazione nella cache locale, vedereCaching locale.

Specifica del caching locale (CLI)

È possibile utilizzare il --cache parametro in AWS CLI per specificare ciascuno dei tre tipi di cache locale.

  • Per specificare una cache delle origini:

    --cache type=LOCAL,mode=[LOCAL_SOURCE_CACHE]
  • Per specificare una cache di livello Docker:

    --cache type=LOCAL,mode=[LOCAL_DOCKER_LAYER_CACHE]
  • Per specificare una cache personalizzata:

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

Per ulteriori informazioni, consulta Creazione di un progetto di compilazione (AWS CLI).

Specifica del caching locale (console)

Puoi specificare una cache nella sezione Artifacts (Artefatti) della console. Per il tipo di cache, scegli Amazon S3 o Local. Se selezioni Local (Locale), scegli una o più delle tre opzioni di cache locale.

Specificate una cache locale scegliendo una o più delle tre opzioni di cache locale.

Per ulteriori informazioni, consulta Creare un progetto di compilazione (console).

Specifica del caching locale (AWS CloudFormation)

Se si utilizza AWS CloudFormation per specificare una cache locale, nella Cache proprietà, perType, specificareLOCAL. Il seguente AWS CloudFormation codice in YAML formato di esempio specifica tutti e tre i tipi di cache locale. È possibile selezionare i tipi disponibili in qualsiasi combinazione. Se utilizzi una cache di livello Docker, in Environment devi impostare PrivilegedMode su true e Type su 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

Per impostazione predefinita, il demone Docker è abilitato per le versioni diverse da quelle esistenti. VPC Se desideri utilizzare i contenitori Docker per le VPC build, consulta Runtime Privilege e Linux Capabilities sul sito Web di Docker Docs e abilita la modalità privilegiata. Inoltre, Windows non supporta la modalità privilegiata.

Per ulteriori informazioni, consulta Creazione di un progetto di compilazione (AWS CloudFormation).