2010-01-06 27 views
5

Tôi vừa mới bắt đầu sử dụng CruiseControl.NET và tôi không hiểu tại sao việc hợp nhất các đầu ra NAnt và NUnit không hoạt động. Tôi đã thiết lập ccnet.config của tôi với các giá trị điển hình như được tìm thấy trên google:Kết hợp NUnit và NAnt trong báo cáo xây dựng

<merge> 
    <files> 
    <file>D:\ccnet\path1\nant-results.xml</file> 
    <file>D:\ccnet\path2\TestResult.xml</file> 
    </files> 
</merge> 
<xmllogger /> 

Nant và ccnet là một nửa lao động: nếu tôi cố tình đưa vào một lỗi mã, sau đó ccnet sẽ nói việc xây dựng đã thất bại. Điều tương tự cũng xảy ra nếu tôi cố tình đưa vào một thử nghiệm không thành công: ccnet sẽ nói rằng việc xây dựng không thành công.

Sự cố là trang ViewBuildReport.aspx không hiển thị bất kỳ đầu ra nào từ NAnt hoặc NUnit.

Rõ ràng tôi phải thiếu điều gì đó, nhưng tôi không biết điều gì. Bất kỳ ý tưởng?

Trả lời

1

Khối đó có nằm trong phần nhà xuất bản của bạn không?

Đây là những gì một trong những nhà xuất bản của tôi trông giống như:

<publishers> 
     <merge> 
      <files> 
       <file>*-results.xml</file> 
      </files> 
     </merge> 
     <xmllogger /> 
    </publishers> 
0

Tôi đã bỏ lỡ thẻ nhà xuất bản, nhưng thêm nó không khắc phục được bất cứ điều gì.

Thực tiễn tốt nhất để gọi nant và nunit từ ccnet là gì? Hiện tại tôi có thiết lập này mà tôi không thích:

ccnet với tác vụ nant và tệp xây dựng nant sử dụng tác vụ msbuild và nunit2 để biên dịch và kiểm tra.

Khó để tìm một ví dụ điển hình về ccnet, nant và nunit thực sự giải thích cách tốt nhất để sử dụng chúng cùng nhau. Tôi đang chạy ccnet như một dịch vụ, điều đó có tạo nên sự khác biệt không? Tôi đang cố gắng để giữ cho nó đơn giản như tôi có thể, đây là khoảng những gì tôi đang làm:

ccnet.config:

<tasks> 
<nant> 
<baseDirectory>D:\ccnet\builds\checkout\path</baseDirectory> 
<buildFile>go.build</buildFile> 
<targetList> 
<target>test</target> 
</targetList> 
</nant> 
</tasks> 

<publishers> 
<merge> 
<files> 
<file>D:\ccnet\builds\artifacts\path1\nant-results.xml</file> 
<file>D:\ccnet\builds\checkout\path\name.dll-results.xml</file> 
</files> 
</merge> 
<xmllogger /> 
</publishers> 

Và trong go.build:

<target name="build" depends="clean"> 
<msbuild project="name.sln"> 
</msbuild> 
</target> 

<target name="test" depends="build"> 
<nunit2> 
<formatter type="Xml" usefile="false" /> 
<test assemblyname="Tests\path\name.dll" /> 
</nunit2> 
</target> 

Nếu tôi kiểm tra nhật ký xây dựng từ bảng điều khiển, thì tôi có thể thấy rằng nó có đầu ra xml từ cả nant và nunit. Nhưng điều này không được hiển thị trên chính bảng điều khiển, tại sao điều đó lại là? Điều này đang trở nên rất bực bội ...

Tôi đã thử hai loại phương pháp khác nhau: Cách tiếp cận ccnet tự động ma thuật (chỉ cần đặt usefile = "false" và để cho ccnet làm việc của nó). Điều này đã không hoạt động.

Tôi cũng đã thử phương pháp thủ công, đặt usefile = "true" và sau đó hợp nhất các tệp nant-results.xml và name.dll-results.xml (không có ký tự đại diện, chỉ sử dụng đường dẫn chính xác đến tệp mà tôi có ba kiểm tra.)

Nó không có ý nghĩa gì cả ở tất cả

+0

Nếu bạn gọi MsBuild từ NAnt, thì tại sao bạn không chỉ thả NAnt và sử dụng MSBuild trực tiếp? Bạn có thể gọi MSBuild trực tiếp từ cc.net. –

+0

Tôi có thể làm sai, đó là lý do :) Ý tưởng là có một tập lệnh nant có thể chạy từ ccnet và cũng có thể chạy cùng một tập lệnh như tập lệnh đăng ký trước (để đảm bảo không có ai kiểm tra trong công cụ phá vỡ bản dựng). Vẫn không giải thích tại sao không có đầu ra nào được hiển thị trong bảng điều khiển. –

+0

Theo như tôi thấy, trang này ở đây: nói rằng đầu ra Nant sẽ được hiển thị theo mặc định (theo phần "Đầu ra NAnt trong Xml "). Nhưng nó không nói bất cứ điều gì về những gì cần làm khi đầu ra nant không được hiển thị. Cùng một url cũng có một phần "NUnit và NAnt", dường như nói rằng nếu bạn sử dụng thuộc tính usefile = "false" của nunit2, thì lại xml sẽ tự động được phân tích cú pháp. Nhưng điều này cũng không xảy ra với tôi. –

6

Albert - Tôi tìm thấy câu trả lời một cách tình cờ một lúc sau khi yêu cầu. Dường như đây là hành vi của ccnet ra khỏi hộp. Vì vậy, theo mặc định nó không hiển thị các kết quả biên dịch trong bảng điều khiển web.

Bạn cần định vị tệp \ CruiseControl.NET \ webdashboard \ dashboard.config và trong phần buildReportBuildPlugin, thêm tệp compile.xsl.Nó sẽ trông giống như thế này khi được thêm vào:

<buildPlugins> 
    <buildReportBuildPlugin> 
    <xslFileNames> 
     <xslFile>xsl\header.xsl</xslFile> 
     <xslFile>xsl\unittests.xsl</xslFile> 
     <xslFile>xsl\modifications.xsl</xslFile> 
     <xslFile>xsl\NCoverSummary.xsl</xslFile> 

     <xslFile>xsl\compile.xsl</xslFile> 

    </xslFileNames> 
    </buildReportBuildPlugin> 
    <buildLogBuildPlugin /> 
    <xslReportBuildPlugin description="NCover Report" actionName="NCoverBuildReport" xslFileName="xsl\NCover.xsl"></xslReportBuildPlugin> 
</buildPlugins> 

Tài liệu cực kỳ tệ, và tôi chỉ vô tình tìm thấy điều này khi tìm kiếm một thứ khác. Tôi không hài lòng vì đã lãng phí quá nhiều thời gian khi một tài liệu nhỏ hoặc một ví dụ trên trang web ccnet sẽ giải quyết vấn đề này sau vài phút.

+1

Sau khi thực hiện thay đổi này, hãy chạy iisreset để khởi động lại iis để các thay đổi có hiệu lực. :) –

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