Я управляю компанией по непрерывной интеграции , и мы запускаем код наших клиентов в Linux. Каждый раз, когда мы запускаем код, мы запускаем его на отдельной виртуальной машине. Частая проблема, которая возникает, заключается в том, что пользовательские тесты иногда не выполняются из-за упорядочения каталога их кода, проверенного на виртуальной машине.
Позвольте мне перейти к более подробно. В OSX файловая система HFS + гарантирует, что каталоги всегда перемещаются в одном и том же порядке. Программисты, использующие OSX, предполагают, что если он работает на их компьютере, он должен работать везде. Но это часто не работает в Linux, потому что файловые системы Linux не предлагают гарантий упорядочения при обходе каталогов.
В качестве примера рассмотрим 2 файла: a.rb, b.rb. a.rb определяет MyObject
, а b.rb использует MyObject
. Если a.rb загружается первым, все будет работать. Если b.rb загружается первым, он попытается получить доступ к неопределенной переменной MyObject
и потерпит неудачу.
Но что еще хуже, это то, что он не всегда просто терпит неудачу. Поскольку порядок файловой системы в Linux не упорядочен, это будет другой порядок на разных машинах. Это хуже, потому что иногда тесты проходят, а иногда они не проходят. Это худший из возможных результатов.
Итак, мой вопрос, есть ли способ сделать порядок файловой системы повторяемым. Может быть, есть какой-то флаг в ext4, который говорит, что он всегда будет проходить каталоги в каком-то порядке? Или, может быть, другая файловая система, которая имеет эту гарантию?