Exécution des build Travis CI en local avec Docker

Exécution des build Travis CI en local avec Docker

WORMS David

By WORMS David

6 sept. 2021

La configuration de l’environnement pour effectuer les tests sur un CI/CD peut nécessiter quelques allers-retours entre votre machine hôte et le CI/CD fonctionnant à distance. Pour chaque tentative, vous devrez valider et publier vos modifications avant d’attendre que la plateforme CI/CD récupère la dernière version de votre code, initialise l’environnement comme le téléchargement et l’installation des dépendances, et enfin exécute les tests.

Avec Travis CI et un peu de travail, vous pouvez recréer les conditions de vos tests en téléchargeant et en recréant l’image Docker que Travis CI utilise. C’est un sujet un peu avancé qui s’avère pratique lorsque vos tests sont un peu plus complexes que la normale.

Avant de commencer, votre projet doit déjà être sur GitHub et activé dans Travis CI. Au moins un build doit avoir été exécuté. Nous utilisons le journal de construction pour extraire l’image de Docker à utiliser ainsi que les commandes exécutées par Travis CI à l’intérieur du conteneur pour préparer le travail. Dans le Job log de votre projet, développez la ligne Worker information et recherchez la ligne commençant par instance :.

Worker information
hostname: bda7cfb4-248b-4402-aa9f-291eaca299e5@1.worker-org-cfdfb76bd-fv5jt.gce-production-4
version: v6.2.20-1-g3a987d6 https://github.com/travis-ci/worker/tree/3a987d61ed169c9539ad435d1a9b5f2d8c6ce4a6
instance: travis-job-8c5d2a02-68a2-4b51-bc02-625ef2c37ad3 travis-ci-sardonyx-xenial-1593004276-4d46c6b3 (via amqp)startup: 5.913615831s

Le nom de l’image Docker est le mot qui suit travis-ci-, sardonyx dans l’exemple ci-dessus. De là, allez dans le registre Docker de Travis CI, localisez l’image de Docker appropriée, travisci/ci-sardonyx dans mon cas, et extrayez la dernière version dans la section des tags. Pour moi, c’est packer-1606895335-7957c7a9.

Maintenant, mettez à jour la commande ci-dessous avec le nom de l’image du Docker :

INSTANCE="travisci/ci-sardonyx:packer-1606895335-7957c7a9"

Vous pouvez maintenant démarrer le conteneur et entrer à l’intérieur :

BUILDID="build-$RANDOM"
# Download the image, it is relatively big 
docker run --name $BUILDID -dit $INSTANCE /sbin/init
# Enter the container
docker exec -it $BUILDID bash -l

Une fois que vous êtes entré dans le conteneur, connectez-vous avec l’utilisateur travis et installez les paquets en utilisant les journaux de l’IC Travis comme exemple :

su - travis
git clone --depth=50 --branch=master https://github.com/adaltas/remark-gatsby-plugins.git adaltas/remark-gatsby-plugins
cd adaltas/remark-gatsby-plugins
# Use master, a branch or a specific commit
git checkout master
# Get the Node.js version from `.travis.yml`, eg 14
nvm install 14
# Download the dependencies, Travis CI use the `yarn.lock` information
yarn --frozen-lockfile
# Finally, run the tests
yarn test
yarn run v1.22.5
$ lerna run test
lerna notice cli v3.22.1
lerna info versioning independent
lerna info ci enabled
lerna info Executing command in 1 package: "yarn run test"
lerna info run Ran npm script 'test' in 'gatsby-remark-title-to-frontmatter' in 1.2s:
$ mocha 'test/**/*.coffee'


  Extract title
    ✓ Move the title to frontmatter


  1 passing (21ms)

lerna success run Ran npm script 'test' in 1 package in 1.2s:
lerna success - gatsby-remark-title-to-frontmatter
Done in 1.95s.

Si les tests sont réussis localement sur votre image Docker, il y a de fortes chances qu’ils passent à distance sur la plateforme Travis CI.

Canada - Maroc - France

International locations

10 rue de la Kasbah
2393 Rabbat
Canada

Nous sommes une équipe passionnée par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Science le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.