Mise en cache de génération dans AWS CodeBuild - AWS CodeBuild

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mise en cache de génération dans AWS CodeBuild

Vous pouvez faire des économies lors de vos générations de projet en utilisant un cache. Un cache peut stocker les éléments réutilisables de votre environnement de génération et les utiliser sur plusieurs générations. Votre projet de génération peut utiliser l'un des deux types de mise en cache suivants : Amazon S3 ou local. Si vous utilisez un cache local, vous devez choisir un ou plusieurs des trois modes de cache : le cache source, le cache de couche Docker et le cache personnalisé.

Note

Le mode de cache de couche Docker est disponible pour l'environnement Linux uniquement. Si vous choisissez ce mode, vous devez exécuter votre build en mode privilégié. CodeBuild le mode privilégié des projets accorde à son conteneur l'accès à tous les appareils. Pour de plus amples informations, veuillez consulter Privilège d'exécution et fonctionnalités Linux sur le site web Docker Docs.

Mise en cache d'Amazon S3

La mise en cache Amazon S3 stocke le cache dans un compartiment Amazon S3 disponible sur plusieurs hôtes de build. C'est une bonne option pour les artefacts de construction de petite ou moyenne taille qui sont plus coûteux à créer qu'à télécharger. Ce n'est pas la meilleure option pour des artefacts de génération de grande taille, car le temps de transfert sur votre réseau peut être important et avoir un impact sur les performances de génération. Ce n'est pas non plus la meilleure option si vous utilisez des couches Docker.

Mise en cache locale

La mise en cache locale stocke un cache localement sur un hôte de génération. Le cache est disponible uniquement sur cet hôte de génération. C'est une bonne option pour les artefacts de build de taille intermédiaire à grande, car le cache est immédiatement disponible sur l'hôte de build. Ce n'est pas la meilleure option si vos builds sont rares. Cela signifie que les performances de génération ne sont pas affectés par le temps de transfert réseau.

Si vous choisissez la mise en cache locale, vous devez choisir un ou plusieurs des modes de cache suivants :

  • Le mode de cache source met en cache des métadonnées Git pour des sources principales et secondaires. Lorsque le cache est créé, les générations suivantes extraient uniquement les modifications apportées entre les validations. Ce mode est un bon choix pour les projets avec un répertoire de travail propre et une source correspondant à un référentiel Git de grande taille. Si vous choisissez cette option et que votre projet n'utilise pas de référentiel Git (AWS CodeCommit, GitHub, GitHub Enterprise Server ou Bitbucket), l'option est ignorée.

  • Le mode de cache de couche Docker met en cache des couches Docker existantes. Ce mode est un bon choix pour les projets qui génèrent ou extraient des images Docker de taille importante. Il permet d'éviter les problèmes de performances causées par l'extraction d'images Docker de grande taille à partir du réseau.

    Note
    • Vous pouvez utiliser un cache de couche Docker uniquement dans l'environnement Linux.

    • L'indicateur privileged doit être défini de sorte que votre projet dispose des autorisations Docker requises.

      Par défaut, le démon Docker est activé pour les versions non VPC. Si vous souhaitez utiliser des conteneurs Docker pour les builds VPC, consultez Runtime Privilege et Linux Capabilities sur le site Web de Docker Docs et activez le mode privilégié. De plus, Windows ne prend pas en charge le mode privilégié.

    • Vous devez prendre en compte les implications de sécurité avant d'utiliser un cache de couche Docker.

  • Le mode de cache personnalisé met en cache les répertoires que vous spécifiez dans le fichier buildspec. Ce mode est un bon choix si votre scénario de génération n'est pas adapté à un des deux autres modes de cache local. Si vous utilisez un cache personnalisé :

    • Seuls les répertoires peuvent être spécifiés pour la mise en cache. Vous ne pouvez pas spécifier de fichiers individuels.

    • Les liens symboliques sont utilisés pour référencer les répertoires mis en cache.

    • Les répertoires mis en cache sont liés à votre génération avant que ses sources de projet soient téléchargées. Les éléments mis en cache remplacent les éléments source s'ils portent le même nom. Les répertoires sont spécifiés à l'aide de chemins de cache dans le fichier buildspec. Pour plus d’informations, consultez Syntaxe d'un fichier buildspec.

    • Évitez les noms de répertoire identiques dans la source et dans le cache. Les répertoires mis en cache localement peuvent remplacer ou supprimer le contenu des répertoires du référentiel source portant le même nom.

Note

La mise en cache locale n'est pas prise en charge avec le type d'LINUX_GPU_CONTAINERenvironnement et le type de BUILD_GENERAL1_2XLARGE calcul. Pour plus d’informations, consultez Modes et types de calcul de l'environnement de création.

Note

La mise en cache locale n'est pas prise en charge lorsque vous configurez CodeBuild pour fonctionner avec un VPC. Pour plus d'informations sur l'utilisation de VPC avec CodeBuild, consultezUtilisation AWS CodeBuild avec Amazon Virtual Private Cloud.

Vous pouvez utiliser la consoleAWS CLI, le SDK ou AWS CloudFormation pour spécifier un cache local.

Spécification d'une mise en cache locale (CLI)

Vous pouvez utiliser le paramètre --cache dans l'AWS CLI pour spécifier chacun des trois types de cache local.

  • Pour spécifier un cache source :

    --cache type=LOCAL,mode=[LOCAL_SOURCE_CACHE]
  • Pour spécifier un cache de couche Docker :

    --cache type=LOCAL,mode=[LOCAL_DOCKER_LAYER_CACHE]
  • Pour spécifier un cache personnalisé :

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

Pour plus d’informations, consultez Création d'un projet de génération (AWS CLI).

Spécification d'une mise en cache locale (console)

Vous spécifiez un cache dans la section Artifacts (Artefacts) de la console. Pour le type de cache, choisissez Amazon S3 ou Local. Si vous choisissez Local, choisissez une ou plusieurs des trois options de cache local.

Pour plus d’informations, consultez Création d'un projet de génération (console).

Spécification d'une mise en cache locale (AWS CloudFormation)

Si vous utilisez AWS CloudFormation pour spécifier un cache local, sur la propriété Cache, pour Type, spécifiez LOCAL. L'exemple de code AWS CloudFormation au format YAML suivant spécifie les trois types de cache local. Vous pouvez spécifier n'importe quelle combinaison de types. Si vous utilisez un cache de couche Docker, sous Environment, vous devez définir PrivilegedMode sur true et Type sur 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
Note

Par défaut, le démon Docker est activé pour les versions non VPC. Si vous souhaitez utiliser des conteneurs Docker pour les builds VPC, consultez Runtime Privilege et Linux Capabilities sur le site Web de Docker Docs et activez le mode privilégié. De plus, Windows ne prend pas en charge le mode privilégié.

Pour plus d'informations, consultez Création d'un projet de génération (AWS CloudFormation).