Saya menjalankan perusahaan integrasi berkesinambungan yang di-host , dan kami menjalankan kode pelanggan kami di Linux. Setiap kali kami menjalankan kode, kami menjalankannya di mesin virtual yang terpisah. Masalah yang sering muncul adalah bahwa tes pelanggan kadang-kadang akan gagal karena pemesanan direktori kode mereka diperiksa pada VM.
Biarkan saya membahas lebih detail. Pada OSX, sistem file HFS + memastikan bahwa direktori selalu dilalui dalam urutan yang sama. Pemrogram yang menggunakan OSX berasumsi bahwa jika bekerja pada mesin mereka, itu harus bekerja di mana-mana. Tetapi sering tidak bekerja di Linux, karena sistem file linux tidak menawarkan jaminan pemesanan ketika melintasi direktori.
Sebagai contoh, perhatikan ada 2 file, a.rb, b.rb. a.rb mendefinisikan MyObject
, dan b.rb menggunakan MyObject
. Jika a.rb dimuat terlebih dahulu, semuanya akan berfungsi. Jika b.rb dimuat lebih dulu, ia akan mencoba mengakses variabel yang tidak ditentukan MyObject
, dan gagal.
Tetapi lebih buruk dari ini, adalah bahwa hal itu tidak selalu gagal. Karena pemesanan sistem file di Linux tidak dipesan, itu akan menjadi urutan yang berbeda pada mesin yang berbeda. Ini lebih buruk karena kadang-kadang tes lulus, dan kadang-kadang gagal. Ini adalah hasil terburuk yang mungkin terjadi.
Jadi pertanyaan saya adalah, apakah ada cara untuk membuat pemesanan sistem file berulang. Beberapa flag ke ext4 mungkin, yang mengatakan itu akan selalu melintasi direktori dalam urutan tertentu? Atau mungkin sistem file lain yang memiliki jaminan ini?