2011-08-29 27 views
8

Tôi đang cố gắng thiết lập Jenkins để thăm dò từ repo SVN của tôi, và bắt đầu một xây dựng mới bất cứ khi nào nó phát hiện một cam kết đã đi vào. nhưng tòa nhà thì quá hăng hái, và ngay bây giờ nó đang xây dựng lại mỗi khi nó thăm dò ý kiến ​​- dù có hay không có bất kỳ thay đổi nào. Các tập tin SCM-polling.log đọc:Jenkins Poll SVN xây dựng liên tục ngay cả khi không có cam kết mới

Started on Aug 31, 2011 9:49:51 AM 
Workspace doesn't contain svn://10.64.147.118:/svn/repos/conttest/csa_test/trunk. Need a new build. 
Done. Took 10 ms 
Changes found 

Console Output từ Jenkins trông như thế này:

Started by an SCM change 
Checking out a fresh workspace because the workspace is not svn://10.64.147.118:/svn/repos/conttest/csa_test/trunk 
Cleaning workspace /var/lib/jenkins/jobs/CSATester/workspace 
Checking out svn://10.64.147.118:/svn/repos/conttest/csa_test/trunk 
.... 
no revision recorded for svn://10.64.147.118:/svn/repos/conttest/csa_test/trunk in the previous build 
No changesets found for this build 

Url repo được thiết lập để svn: //10.64.147.118:/svn/Repos/Conttest/trunk và tôi đã nói với Jenkins để xóa các tập tin không phiên bản và sau đó cập nhật trước khi xây dựng. Không gian làm việc chắc chắn chứa các tập tin trong repo, và xây dựng thành công mỗi lần.

Bất kỳ ý tưởng nào về điều gì có thể gây ra điều này?

+0

Có cùng sự cố ngay bây giờ.Hudson thăm dò kho lưu trữ kịp thời, tuy nhiên nó xây dựng mỗi lần mặc dù không có thay đổi. Làm thế nào đây có thể là thiết lập mặc định? – Jonny

Trả lời

3

Vì vậy, tôi đã phát hiện ra rằng có vẻ như giao thức svn: // không được hỗ trợ trong cả Jenkins hoặc plugin SVN. Sau khi thay đổi máy chủ SVN của tôi để sử dụng http: // và thiết lập đường dẫn mới đó trong Jenkins, các bản dựng không còn xảy ra trừ khi thực sự có một cam kết mới.

TL, DR: Không sử dụng svn: //, sử dụng http: // thay thế.

1

Tôi không chắc điều gì gây ra điều này, nhưng tôi đã gặp nhiều vấn đề với việc bỏ phiếu SCM trong quá khứ. Tôi đã thấy rằng nó hoạt động tốt hơn để viết một kích hoạt post-cam SVN truy cập url của build để kích hoạt nó. Điều này giúp loại bỏ chi phí bỏ phiếu và sẽ không bao giờ kích hoạt bản dựng nếu không có thay đổi. Nếu bạn muốn có được ưa thích, bạn thậm chí có thể làm cho các kích hoạt 'thông minh hơn' và tránh biên dịch về những thay đổi của các tập tin như readme.txt và muốn.

+0

Vâng, tôi đã nghĩ về cách tiếp cận đó, nhưng tôi không thực sự muốn thực hiện nó, vì tôi không muốn giả định rằng mọi dự án trong repo SVN đều có một bản dựng tương ứng trong Jenkins (Vâng, tôi có thể sửa đổi sau cam kết chỉ làm việc trên một số dự án, nhưng sau đó tôi sẽ phải thay đổi điều đó một lần nữa bất cứ khi nào một dự án mới được tạo ra trong repo mà tôi muốn Jenkins quản lý). Nhưng, trừ khi tôi nhận được phiếu thăm dò ý kiến ​​hoạt động đúng cách, cam kết sau là cách duy nhất tôi có thể nghĩ đến. – lightstrike

+0

nó chỉ ra rằng câu trả lời cho vấn đề của tôi là sử dụng giao thức http: // trong Jenkins ở vị trí của repo của tôi. Rõ ràng nó không hỗ trợ giao thức svn: //. Tất cả mọi thứ hoạt động ngay bây giờ với sự thay đổi đó. – lightstrike

1

Chúng tôi đã gặp sự cố tương tự với CVS trong đó cuộc thăm dò ý kiến ​​của CVS mất nhiều thời gian hơn thời gian tôi yêu cầu cuộc thăm dò ý kiến ​​cho các thay đổi. Tức là, CVS sẽ mất ba phút để thăm dò ý kiến ​​về những thay đổi, nhưng tôi đã nói với nó để thăm dò ý kiến ​​mỗi phút. Tuy nhiên, đây không phải là vấn đề với Subversion.

Bạn có thể sử dụng một bài cam kết nối như Feasoron nói, nhưng có hai vấn đề với cách tiếp cận rằng:

  • Nếu Jenkins/Hudson là xuống khi kích hoạt được hit, Jenkins/Hudson sẽ không làm một xây dựng.
  • Nếu có bất kỳ sự khác biệt về thời gian giữa máy chủ Jenkins/Hudson (thậm chí chỉ một vài giây), bạn có thể kết thúc với Jenkins/Hudson xây dựng phiên bản cũ hơn của kho lưu trữ.

Hầu hết mọi người có cuộc thăm dò Subversion ở Jenkins/Hudson và không có những vấn đề này, vì vậy có thể liên quan đến điều gì đó trong quá trình thiết lập của bạn.

Hãy xem nhật ký bỏ phiếu cho từng bản dựng và xem lý do tại sao Jenkins/Hudson tin rằng bản cập nhật (có sẵn trong mỗi bản dựng dưới dạng liên kết ở phía bên trái của trang web). Ngoài ra, hãy xem một số dòng đầu tiên trong bảng điều khiển xây dựng của bạn và xem liệu đó có cung cấp bất kỳ manh mối nào hay không.

Nếu bạn vẫn không thể tìm ra, hãy cập nhật câu hỏi của bạn bằng một vài nhật ký bỏ phiếu và có thể giúp chúng tôi hiểu tại sao bạn gặp phải những vấn đề này.

+0

Sự khác biệt thời gian thực sự phụ thuộc vào móc của bạn - chúng tôi chuyển số sửa đổi cho Jenkins, và nó xây dựng bản sửa đổi đó. Tôi nghĩ rằng điều này là phức tạp hơn nếu bạn đang sử dụng Jenkins được xây dựng trong SCM để lấy mã, nhưng điều đó là có thể. – Feasoron

+0

@David - Tôi đã tìm thấy giải pháp, rõ ràng giao thức svn: // không được hỗ trợ, như sau khi tôi thay đổi máy chủ SVN và Jenkins của tôi để sử dụng http: // mọi thứ đã làm việc cho họ. Cảm ơn đã giúp đỡ. – lightstrike

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