December 4, 2024

Biotechnologie News

Classe Mondiale Technologie

Exécuter vos builds Travis CI localement avec Docker

Exécuter vos builds Travis CI localement avec Docker

La configuration de l’environnement pour exécuter les tests sur un CI/CD peut nécessiter quelques allers-retours entre votre machine hôte et le CI/CD exécuté à distance. Pour chaque tentative, vous devrez valider et publier vos modifications avant d’attendre que la plate-forme CI/CD récupère la dernière version de votre code, initialise l’environnement tel que 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 qu’utilise Travis CI. Il s’agit d’un petit sujet avancé qui s’avère utile lorsque vos tests sont un peu plus complexes que d’habitude.

Avant de commencer, votre projet doit déjà être sur GitHub et activé dans Travis CI. Au moins une génération doit avoir été exécutée. Nous utilisons le journal de construction pour extraire l’image 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 Worker information ligne 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 après travis-ci-, sardonyx dans l’exemple ci-dessus. De là, rendez-vous au Registre Docker de Travis CIlocalisez l’image Docker appropriée, travisci/ci-sardonyx dans mon cas, et extraire le dernière version dans la section des balises. Il est packer-1606895335-7957c7a9 pour moi.

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

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

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

BUILDID="build-$RANDOM"

docker run --name $BUILDID -dit $INSTANCE /sbin/init

docker exec -it $BUILDID bash -l

Une fois entré dans le conteneur, connectez-vous avec le travis user et installez les packages en utilisant les journaux Travis CI 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

git checkout master

nvm install 14

yarn --frozen-lockfile

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 réussissent localement sur votre image Docker, il y a de fortes chances qu’ils passent à distance sur la plateforme Travis CI.