2009-01-08 36 views

Trả lời

27

Tôi đã thử tính năng này một vài tháng trước, nhưng tôi không sử dụng nó nữa (chỉ vì tôi không cần nó, không phải vì nó không phải là một tính năng tốt).

Về cơ bản, bạn xác định n Trục, mỗi trục là thuộc tính có nhiều giá trị. Chúng ta hãy đi với một ví dụ: bạn xác định trục "JDK", với giá trị có thể "1,4", "1,5", "1,6" và bạn xác định một thuộc tính "cơ sở dữ liệu" khác, nơi các giá trị có thể là "oracle", "mysql".

Như vậy, Hudson sẽ ra mắt bạn build 6 lần:

  • với JDK 1.4, với cơ sở dữ liệu tài sản = oracle (tức là JVM được đưa ra với -Ddatabase = oracle)
  • với JDK 1.5, với cơ sở dữ liệu tài sản = oracle
  • với JDK 1.6, với cơ sở dữ liệu tài sản = oracle
  • với JDK 1.4, với cơ sở dữ liệu tài sản = mysql
  • với JDK 1.5, với cơ sở dữ liệu tài sản = mysql
  • với JDK 1.6, với cơ sở dữ liệu tài sản = mysql

Sau đó, khi mọi thứ kết thúc, bạn sẽ có thể nhìn thấy kết quả cho mỗi lần lặp.

Tính năng này có thể thực sự hữu ích khi bạn cần thử nghiệm ứng dụng của mình trong một số môi trường (trong ví dụ của tôi, với các phiên bản JDK hoặc cơ sở dữ liệu khác nhau).

Lưu ý rằng ngoại trừ trục JDK, bạn phải tự quản lý thuộc tính được cung cấp dưới dạng mục nhập của Hudson. Trong ví dụ của tôi, ứng dụng phải tính đến thuộc tính "cơ sở dữ liệu". Cuối cùng, một ý tưởng tốt là sử dụng thuộc tính này để kích hoạt một cấu hình cụ thể trong cấu hình Maven2, nếu bạn dự án bị quấy rối (xem here để biết thêm chi tiết về điều đó).

Tôi hy vọng lời giải thích của tôi là rõ ràng đủ :)

+2

Làm cách nào để bạn truy cập các thuộc tính này cho các dự án không phải Java? Khi biến môi trường? –

+2

@Sridhar Thông thường, các thuộc tính được thiết lập bởi Hudson là các biến môi trường cho bản dựng hiện tại. – romaintaz

+2

OK, câu hỏi này đã hết hạn nhưng tôi gặp khó khăn khi thiết lập dự án ma trận - bất kỳ gợi ý nào về cách định cấu hình một câu hỏi? :) –

6

Matrix xây dựng có một số vấn đề:

  • Nói chung không tương thích với các plugin - họ đang nhận được tốt hơn, nhưng bạn cần phải được giữ rất nhiều lên cho đến nay.
  • Hiện vật - khó khăn hơn nhiều để tháo ra - URls hơi khó xử hơn một chút, tìm chúng trên FS (mà bạn nên tránh dù sao đi nữa) bây giờ là một cơn ác mộng.

Điều đáng tiếc là vì khái niệm này rất tốt và rất tiện dụng khi nó hoạt động.


Sửa

  • Không có khả năng để bắt đầu điểm duy nhất.

Cách thông thường của chúng tôi là tạo các tham số được thiết lập để chạy đồng thời - đi kèm với các vấn đề của riêng nó, nhưng tiết kiệm cho chúng tôi nhiều công việc với cùng mã và các hằng số khác nhau.

+0

Bạn có đề xuất nào tốt hơn không? Tôi đang xem xét việc sử dụng ma trận để cắt bộ unittest của chúng tôi thành một số công việc giống hệt nhau mà mỗi một tập hợp con khác nhau của bộ (để tăng tốc chu kỳ kiểm tra của chúng tôi từ 40 phút tới <5 phút) của chúng tôi – PerilousApricot

+0

Chúng tôi thực sự sử dụng mã trong các bước xây dựng để bắt đầu công việc được tham số hóa - do đó, công việc "kicker" hoặc "scheduler" của cha mẹ, bắt đầu công việc hạ lưu. Chúng ta sử dụng một tham số nguyên nhân để liên kết chúng trở lại, và các tham số guid để tìm các công việc một lần trong hàng đợi để công việc cha mẹ có thể hiển thị tất cả các công việc con mà nó đã bắt đầu. Đây là - một công việc duy nhất được tham số hóa và công cụ tạo chế độ xem + gốc khác có thể được sử dụng để xem chúng. Chúng tôi sử dụng tính năng chạy đồng thời cho phép. –

Các vấn đề liên quan