Skip to content
This repository has been archived by the owner on Nov 12, 2020. It is now read-only.

[CI] Add cache on CircleCI configuration #8

Open
wants to merge 1 commit into
base: step-4/use-environment-variable
Choose a base branch
from

Conversation

Ynote
Copy link
Owner

@Ynote Ynote commented Aug 11, 2019

Description

Dans cette étape, on met en cache les données qui sont enregistrées dans vendor/bundle. Ce dossier contient les dépendances installées par la commande bin/install.

Pour la mise en cache, on indique à CircleCI le chemin à mettre en cache ainsi qu'une clé de cache.

Explication

Clé de cache

Une clé de cache permet de savoir lorsque des données mise en cache ne sont plus valides.

Une bonne clé de cache doit donc être un compromis entre :

  • la fiabilité des données mise en cache : les données sont-elles à jour ou sur la bonne version ?
  • la performance : ne pas télécharger à nouveau des données qui ont déjà été téléchargées auparavant

Dans notre cas, la clé de cache, que l'on génère, utilise le "checksum" (un hash SHA256 encodé en base64) du fichier Gemfile.lock. Un exemple de clé possible :

`bundler-2313c4106ad5a4da8b2410028f6524dc7e094681207e5740b787e7243bd73fbf`

Le Gemfile.lock contient les versions exactes des dépendances installées et permet donc une fiabilité sur les dépendances installées dans le dossier vendor/bundle.

Par défaut, une clé de cache, si elle ne change pas, expire au bout d'un mois sur CircleCI.

Étapes sur CircleCI

Lorsque CircleCI lance notre job :

  • il vérifie s'il y a déjà des données enregistrées pour la clé bundler-{{ checksum "Gemfile.lock" }} :
    • si des données existent pour cette clé, il récupère ces données et les place dans le dossier vendor/bundle,
    • si aucune donnée n'existe, il ne fait rien
  • il lance les commandes de notre job (cela installe les dépendances si elles n'ont pas été récupérées par le cache)
  • il enregistre toutes les données du dossier vendor/bundle sous la clé bundler-{{ checksum "Gemfile.lock" }} :
    • si cette clé existe déjà, il ne fait rien,
    • si cette clé n'existe pas, il enregistre les données.

Ressources

@Ynote Ynote force-pushed the step-5/use-cache branch 3 times, most recently from 4a8f397 to 015fbba Compare August 11, 2019 15:38
@Ynote Ynote force-pushed the step-4/use-environment-variable branch from 58d4e54 to b6ac75b Compare August 11, 2019 16:21
@Ynote Ynote changed the title [CircleCI] Add cache [CI] Add cache on CircleCI configuration Oct 7, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant