Je dirige un intégration continue hébergée et nous exécutons le code de nos clients sur Linux. Chaque fois que nous exécutons le code, nous l'exécutons dans une machine virtuelle distincte. Un problème fréquent est que les tests d'un client échouent parfois à cause de l'ordre des répertoires de son code extrait sur la machine virtuelle.
Permettez-moi d'entrer dans les détails. Sur OSX, le système de fichiers HFS+ garantit que les répertoires sont toujours parcourus dans le même ordre. Les programmeurs qui utilisent OSX partent du principe que si cela fonctionne sur leur machine, cela doit fonctionner partout. Mais souvent, cela ne fonctionne pas sur Linux, car les systèmes de fichiers linux n'offrent pas de garanties d'ordre lors du parcours des répertoires.
Par exemple, considérons qu'il y a 2 fichiers, a.rb, b.rb. a.rb définit MyObject
et b.rb utilise MyObject
. Si a.rb est chargé en premier, tout fonctionnera. Si b.rb est chargé en premier, il essaiera d'accéder à une variable non définie. MyObject
et d'échouer.
Mais le pire, c'est qu'il ne se contente pas toujours d'échouer. Parce que l'ordre du système de fichiers sous Linux n'est pas ordonné, il sera différent sur différentes machines. C'est pire parce que parfois les tests réussissent, et parfois ils échouent. C'est le pire résultat possible.
Ma question est donc la suivante : existe-t-il un moyen de rendre la commande du système de fichiers reproductible ? Un drapeau pour ext4 peut-être, qui dit qu'il traversera toujours les répertoires dans un certain ordre ? Ou peut-être un système de fichiers différent qui a cette garantie ?
2 votes
Randomiser l'ordre sous OSX .
0 votes
Outre les réponses vraiment vraies - qu'est-ce que est l'ordre "correct" ? Par ordre alphanumérique ? Ou par CTIME ? Arbitrairement, par magie ? Comment les clients s'assurent-ils que cet ordre est respecté lors du déploiement ? Comment ces informations magiques sur l'ordre doivent-elles vous être transmises ?
0 votes
@Michuelnik Il n'y a pas vraiment d'ordre correct, mais quelque chose de répétable signifierait que nous obtenons le même résultat à chaque fois, ce qui serait mieux que rien. Idéalement, nous devrions utiliser l'ordre de HFS+, qui est alphabétique, je pense.
0 votes
@Michuelnik Ce problème affecte beaucoup plus les tests que le déploiement Le déploiement se fait principalement sur Linux, mais si quelque chose échoue, ils le corrigeront. Les tests se déroulent principalement sous OSX, donc si quelque chose échoue, c'est forcément de notre faute.
1 votes
@PaulBiggar : Je comprends votre problème et je ne peux pas vous offrir une bonne solution (à moins que vous ne puissiez trouver un moyen de faire de l'argent). détecter si l'ordre des fichiers est la cause du problème). Mais je ne Je suis d'accord avec l'affirmation selon laquelle "un succès répétable vaut mieux qu'un échec incohérent" : Si mon environnement de développement (et de CI) a des succès répétés mais que ma plateforme de déploiement a le syndrome de "l'échec non fiable", alors je suis vraiment dans une mauvaise passe. J'aurais plutôt voir la défaillance non fiable dès que possible (idéalement sur mon système de développement mais au moins sur mon système CI).