Tôi điều hành một công ty tích hợp liên tục được lưu trữ và chúng tôi chạy mã của khách hàng trên Linux. Mỗi lần chúng tôi chạy mã, chúng tôi chạy nó trong một máy ảo riêng. Một vấn đề thường xuyên phát sinh là các thử nghiệm của khách hàng đôi khi sẽ thất bại do thứ tự thư mục mã của họ được kiểm tra trên VM.
Hãy để tôi đi vào chi tiết hơn. Trên OSX, hệ thống tệp HFS + đảm bảo rằng các thư mục luôn được duyệt theo cùng một thứ tự. Các lập trình viên sử dụng OSX cho rằng nếu nó hoạt động trên máy của họ, thì nó phải hoạt động ở mọi nơi. Nhưng nó thường không hoạt động trên Linux, vì các hệ thống tệp linux không cung cấp bảo đảm đặt hàng khi duyệt qua các thư mục.
Ví dụ, xem xét có 2 tệp, a.rb, b.rb. a.rb định nghĩa MyObject
và b.rb sử dụng MyObject
. Nếu a.rb được tải trước, mọi thứ sẽ hoạt động. Nếu b.rb được tải trước, nó sẽ cố truy cập vào một biến không xác định MyObject
và không thành công.
Nhưng tệ hơn thế, là nó không phải lúc nào cũng thất bại. Bởi vì hệ thống tập tin đặt hàng trên Linux không được đặt hàng, nó sẽ là một thứ tự khác nhau trên các máy khác nhau. Điều này tồi tệ hơn bởi vì đôi khi các bài kiểm tra vượt qua, và đôi khi chúng thất bại. Đây là kết quả tồi tệ nhất có thể.
Vì vậy, câu hỏi của tôi là, có cách nào để làm cho trật tự hệ thống tập tin lặp lại. Một số cờ cho ext4 có lẽ, điều đó nói rằng nó sẽ luôn đi qua các thư mục theo thứ tự nào đó? Hoặc có thể một hệ thống tập tin khác có đảm bảo này?