2011-08-09 41 views
21

Có ai biết cách tích hợp liên tục với lập trình R không? Tôi nhận thức được các công cụ như gói svUnit để làm các bài kiểm tra đơn vị, nhưng có ai cố gắng chạy chúng với Hudson/Jenkins không?Tích hợp liên tục (Hudson/Jenkins) và Lập trình R

+0

+1 Tôi cũng quan tâm đến điều này, để tự động nhận các bản cập nhật gói từ CRAN làm hỏng các bài kiểm tra của tôi. Tôi muốn tôi có thể dễ dàng gửi một loạt các bài kiểm tra ngược dòng, để hỗ trợ các nhà phát triển gói, nhưng các thử nghiệm tự động sẽ làm ngay bây giờ. – Iterator

+1

chỉ tự hỏi liệu @Iterator hoặc Travis có dùng thử svUnit mới nhất hay không. theo tôi svUnit cung cấp '' 'rất tốt' '' tích hợp trong Jenkins, vì vậy nhìn thấy Dirks câu trả lời là "chấp nhận" làm cho tôi nghĩ rằng bạn chưa có trước của nó. – mariotomo

+0

@mariotomo - Cảm ơn bạn đã cảnh báo - Tôi chắc chắn sẽ kiểm tra. Tôi có một dự án sắp tới sẽ cần phải sử dụng thử nghiệm như vậy. – Iterator

Trả lời

12

Tôi không thấy bất kỳ vấn đề cụ thể nào. Những điều này có xu hướng kịch bản nên có thể chỉ

  • điểm đến đầu kho của bạn
  • N phút sau mỗi checkin, vòng qua các thư mục nguồn
  • gọi R CMD check trên mỗi
  • của bạn gói phải được đặt để sử dụng kiểm tra đơn vị, bạn có thể sử dụng
    • RUnit đó là đơn vị kiểm tra ban đầu g cho R; nó được sử dụng rộng rãi
    • testthat là gói mới hơn của Hadley và được nhiều gói của ông sử dụng
    • svUnit bởi Philippe mà AFAIK không bao giờ bắt gặp nhiều như hai loại kia.

Điều đó thực sự không khác gì so với tích hợp liên tục với các ngôn ngữ được biên dịch. Câu hỏi của bạn thực sự là về cách kiểm thử đơn vị trong R, và câu hỏi đó đã được đề cập trước đây.

+3

những gì bạn viết là khá đúng - nói chung—, câu hỏi tuy nhiên đề cập rõ ràng Jenkins/Hudson, và với kiến ​​thức của tôi, sự tích hợp tốt nhất được cung cấp bởi [svUnit] (https://r-forge.r-project.org/scm /viewvc.php/pkg/svUnit/R/?root=sciviews). xem câu trả lời khác của tôi. ...IMO, chỉ có thể thực thi thử nghiệm đơn vị theo kịch bản không được sử dụng nhiều nếu kết quả không ở định dạng tương thích với công cụ tích hợp liên tục đã chọn. – mariotomo

+0

Bất kỳ đề xuất nào về việc Jenkins hiển thị bản dựng đã thất bại nếu kiểm tra R CMD không thành công? –

+1

Chắc chắn, hãy nhìn vào [r-travis project on github] mới (https://github.com/craigcitro/r-travis) có hàm 'dump_logs'. –

1

Hudson/Jenkins hỗ trợ chạy tập lệnh bash. Tôi nghĩ rằng bạn có thể sử dụng điều này như một lối vào thế giới R của bạn. Trong R, một cách đơn giản để giữ kết quả là sử dụng sink ("toYourFile.txt") và sau đó sử dụng hàm hiển thị kết quả của CI để hiển thị toYourFile.txt.

+0

Thật dễ dàng để CI hiển thị tệp, làm cách nào để bạn nhận được tệp đó để xác định lỗi? –

+0

"cách xác định lỗi?", Bạn cần đầu ra ở định dạng có thể được nhận diện bởi Jenkins và đây chính xác là những gì bạn có thể làm với svUnit, sử dụng giao thức "junit". – mariotomo

4

tại văn phòng chúng tôi đã sử dụng Hudson/Jenkins trong một thời gian dài. Tôi đã đóng góp integration of svUnit to Jenkins vì vậy tôi khuyên bạn nên sử dụng svUnit trước khi thử bất cứ điều gì khác.

hãy xem hai thư viện tôi duy trì: loggingdelftfews hoặc bản thân mình đang cố gắng theo dõi zooredistribute it on github.

Gần đây tôi chưa thực hiện dịch vụ vệ sinh nên ba tập lệnh (trong zoo, logging, delftfews) đều khác nhau một chút. một trong phiên bản sở thú của tôi sẽ dừng lại nếu bất kỳ thử nghiệm nào không thành công. điều này là thực tế khi bạn đang chạy R CMD check, nhưng có lẽ ít hơn một ý tưởng tốt khi thực hiện tích hợp liên tục.

+0

bạn có thể làm rõ làm thế nào để kích hoạt Jenkins thất bại, hoặc nơi trong mã svUnit nó được đề cập? Tôi không thể tìm thấy bất kỳ văn bản có liên quan trong tài liệu gói svUnit hoặc họa tiết, và nó không phải là rõ ràng với tôi từ các kịch bản bạn đã viết (tôi mới đến CI) những gì sẽ kích hoạt Jenkins để vượt qua/thất bại. Liệu nó chỉ đáp ứng với stderr? –

+0

bạn nói bạn mới sử dụng CI, tôi khuyên bạn nên đọc hướng dẫn sử dụng của Jenkin để hiểu cấu trúc của nó, có thể bạn muốn xem một máy chủ Jenkins đang hoạt động? (ví dụ: https://csvjdbc.ci.cloudbees.com/job/csvjdbc/) mọi thay đổi đã cam kết trong các nguồn của bạn sẽ kích hoạt Jenkins chạy bất kỳ tập lệnh nào bạn đăng ký và khi hoàn thành kịch bản, nó sẽ sử dụng báo cáo được tạo để xuất bản các bài kiểm tra thành công/thất bại/bỏ qua. – mariotomo

+0

Bạn đã thiết lập thành công/thất bại như thế nào, dựa trên báo cáo? Đó có phải là tiêu chuẩn trong Jenkins không? – bobK

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