2011-12-23 31 views
6

tôi sử dụng Jenkins để chạy một số xét nghiệm hội nhập vào một appilcation web (sử dụng dưa chuột, Capybara và selen)Jenkins xây dựng không thành công khi hiện vật không có

Everytime một thử nghiệm thất bại, một ảnh chụp màn hình, nguồn HTML và một đoạn video của quá trình được lưu.

cấu trúc con đường trông như thế này:

results/output/<test_name>/<files> 

tôi sử dụng những đồ vật lưu trữ đặc trưng của Jenkins để cung cấp các tập tin (mẫu: results/output/*/*). Nó hoạt động tuyệt vời.

Tuy nhiên ngay khi xây dựng thành công, không có ảnh chụp màn hình/video, v.v ... và bản dựng không thành công vì Jenkins không thể tìm thấy tệp cho mẫu.

Có cách nào để nói cho Jenkins thành công mà không cần phải có tệp tin không?

Tôi không muốn thực hiện một cuộc tấn công dơ bẩn liên quan đến việc tạo cấu trúc thư mục trống như kết quả/đầu ra/thành công/hooray.txt.

+0

Tốt câu hỏi; Tôi đã tự hỏi về điều tương tự! – Jonik

Trả lời

4

Tôi đã gặp sự cố tương tự trên một vài dự án của chúng tôi. Có hai cách khác nhau mà chúng tôi đã giải quyết nó (trên hai bản dựng khác nhau).

1) Thêm lệnh vào các bước xây dựng tạo tệp tạm thời không có thật nếu không có tệp nào tồn tại.

Trong trường hợp này, nó có nghĩa là thu thập tệp output.pdf sẽ được tạo nếu thử nghiệm không thành công. Tôi đã thêm một bước xây dựng nếu tệp đó không tồn tại, chúng tôi đã tạo tệp "missing.pdf". Sau đó, những gì tôi thu thập như hiện vật là '* .pdf' từ thư mục đã cho. Điều này dường như làm việc khá tốt.

2) Trên một bản dựng khác, chúng tôi cần thu thập một tập hợp các tệp bằng cách sử dụng hình cầu.

Những gì chúng tôi đã làm ở đây đã được thực hiện để bước xây dựng luôn tạo một tệp trống duy nhất trong khu vực đích. Bằng cách đó, glob luôn phù hợp với thứ gì đó.

Đó là những giải pháp tốt nhất mà chúng tôi đã tìm thấy từ trước tới nay. Nếu bạn tìm thấy một cái gì đó tốt hơn tôi rất thích nghe về nó.

+0

Tôi đã thêm một bước tạo tệp success.txt khi thư mục trống sau khi xây dựng – leifg

13

Có một vấn đề mở trên cho rằng: https://issues.jenkins-ci.org/browse/JENKINS-10502

Các hành vi được điều khiển bởi hệ thống sở hữu hudson.tasks.ArtifactArchiver.warnOnEmpty, như đã giải thích trên https://wiki.jenkins-ci.org/display/JENKINS/Features+controlled+by+system+properties

+1

+1, tôi nghĩ đây là câu trả lời đúng. (Nếu bất kỳ ai khác tự hỏi làm thế nào để làm việc này với Jenkins đang chạy trên Debian/Ubuntu, hãy sửa '/ etc/default/jenkins' và đặt' -Dhudson.tasks.ArtifactArchiver.warnOnEmpty = true' vào ** JAVA_ARGS ** (hoặc JENKINS_JAVA_OPTIONS) JENKINS_ARGS sẽ không hoạt động, ít nhất nếu bạn có nhiều hơn một tài sản -D! – Jonik

+2

Tuy nhiên, như một người nào đó bình luận trong vấn đề bạn liên kết, xấu hổ rằng điều này không thể được cấu hình với một hộp kiểm trong giao diện người dùng Jenkins trên một cơ sở cho mỗi công việc. – Jonik

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