Je dirige une entreprise d' 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 qui se pose est que les tests d'un client échouent parfois en raison de la commande d'annuaire de leur code extrait sur la machine virtuelle.
Permettez-moi d'aller plus en détail. Sous 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 supposent que si cela fonctionne sur leur machine, cela doit fonctionner partout. Mais souvent, cela ne fonctionne pas sous Linux, car les systèmes de fichiers linux n'offrent pas de garanties de commande lors de la traversée des répertoires.
À titre d'exemple, considérons qu'il existe 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 échouera.
Mais pire que cela, c'est qu'il n'échoue pas toujours. Parce que la commande du système de fichiers sous Linux n'est pas ordonnée, ce sera un ordre 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 vers 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?