Caching delle compilazioni in AWS CodeBuild - 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à.

Caching delle compilazioni in AWS CodeBuild

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à, è necessario eseguire la compilazione in modalità privilegiata. CodeBuildai 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

La memorizzazione nella cache 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,GitHubEnterprise 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, i contenitori Docker non consentono l'accesso a nessun dispositivo. La modalità privilegiata garantisce l'accesso al contenitore Docker di un progetto a tutti i dispositivi. Per ulteriori informazioni, vedere Runtime Privilege e Funzionalità Linux sul sito web Docker Docs. 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 conLINUX_GPU_CONTAINERtipo di ambiente eBUILD_GENERAL1_2XLARGEtipo di calcolo. Per ulteriori informazioni, consulta Tipi di calcolo degli ambienti di compilazione.

Nota

La memorizzazione nella cache locale non è supportata durante la configurazioneCodeBuildper lavorare con un VPC. Per ulteriori informazioni sull'utilizzo dei VPC conCodeBuild, vediUsoAWS CodeBuildcon Amazon Virtual Private Cloud.

È possibile utilizzare ilAWS CLI, console, SDK oAWS CloudFormationper specificare una cache locale.

Specifica del caching locale (CLI)

Per specificare ognuno dei tre tipi di cache locale, è possibile utilizzare il parametro --cache della AWS CLI.

  • 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. PerTipo di cache, scegliAmazon S3oLocale. Se selezioni Local (Locale), scegli 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 utilizzi AWS CloudFormation per specificare una cache locale, nella proprietà Cache, in Type devi indicare LOCAL. Il seguente codice di esempio AWS CloudFormation in formato YAML 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, i contenitori Docker non consentono l'accesso a nessun dispositivo. La modalità privilegiata garantisce l'accesso al contenitore Docker di un progetto a tutti i dispositivi. Per ulteriori informazioni, vedere Runtime Privilege e Funzionalità Linux sul sito web Docker Docs. Inoltre, Windows non supporta la modalità privilegiata.

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