2010-04-07 21 views
5

Trong build log của dự án của tôi, tôi có thể nhìn thấy những thuộc tính:Làm cách nào để chuyển thuộc tính tích hợp vào tệp bó với CruiseControlNet?

<integrationProperties> 
    <CCNetProject>Gdet_T</CCNetProject> 
    ... 
    <LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate> 
    <LastChangeNumber>10841</LastChangeNumber> 
</integrationProperties> 

Tôi muốn vượt qua tài sản CCNetProjectLastChangeNumber vào một tập tin batch. nó hoạt động tốt với CCNetProject, vì nó có thể được sử dụng trong lô dưới dạng biến môi trường %CCNetProject%.

Nhưng nó không làm việc với các tài sản khác (những người không bắt đầu với tiền tố CCnet) như LastChangeNumber hoặc LastModificationDate.

Tôi đã cố chuyển nó làm đối số, nhưng không thành công!

<exec> 
    <executable>$(WorkingFolderBase)\MyBatch.bat</executable> 
    <baseDirectory>$(WorkingFolderBase)\</baseDirectory> 
    <buildArgs>$(LastModificationDate)</buildArgs> 
</exec> 

Tôi cố gắng để vượt qua nó như biến môi trường, nhưng nó không thành công:

<exec> 
    <executable>$(WorkingFolderBase)\MyBatch.bat</executable> 
    <baseDirectory>$(WorkingFolderBase)\</baseDirectory> 
    <environment> 
    <variable> 
     <name>svn_label</name> 
     <value>"${LastModificationDate}"</value> 
    </variable> 
    </environment> 
</exec> 

Kết quả luôn luôn là như nhau khi tôi hiển thị các thông số hoặc biến: chuỗi rỗng hoặc tên biến $(svn_label)

Tôi chắc chắn nó rất đơn giản, nhưng ... Tôi không thể tìm thấy! Bất kỳ ý tưởng ?

+0

Bạn lẫn lộn các biến môi trường và các ví dụ lập luận. –

+0

Phải! Tôi sửa nó rồi. – TridenT

Trả lời

0

ok, tìm thấy giải pháp. Cần sử dụng một nhãn cụ thể được gọi là SvnRevisionLabeller để truy lục bản sửa đổi svn. sau đó có sẵn thông qua biến môi trường CCNetLabel.

http://code.google.com/p/svnrevisionlabeller/

<labeller type="svnRevisionLabeller"> 
    <url>http://mysvnrootproject/trunk</url> 
</labeller> 
+0

Đó là một chút lạ, nhưng tôi sẽ chấp nhận trả lời của tôi :) Cảm ơn các bạn đã giúp tôi, nó rất hữu ích để điều tra. – TridenT

8

CCNET qua các thông số sau cho các chương trình bên ngoài:

CCNetArtifactDirectory 
CCNetBuildCondition 
CCNetBuildDate 
CCNetBuildTime 
CCNetFailureUsers 
CCNetIntegrationStatus 
CCNetLabel 
CCNetLastIntegrationStatus 
CCNetListenerFile 
CCNetModifyingUsers 
CCNetNumericLabel 
CCNetProject 
CCNetProjectUrl 
CCNetRequestSource 
CCNetUser 
CCNetWorkingDirectory 

Như bạn thấy LastIntegrationStatus ví dụ có sẵn thông qua CCNetLastIntegrationStatus nhưng LastModificationDate ví dụ: không có tương đương.

Bạn có thể vượt qua đối số bổ sung qua <buildArgs> hoặc <environment> nhưng bên cấu hình CCNET bạn có không truy cập trên các thuộc tính tích hợp nêu trên. Hầu hết mọi người bắt đầu với CCNET (bao gồm cả bản thân mình) thử một cái gì đó như <buildArgs>$(CCNetProject)</buildArgs> và thất bại.

Xem qua số answer to a similar question của tôi.

Rất tiếc, tôi không thể cung cấp giải pháp tốt hơn.

Cập nhật (liên quan đến Thinker's suggestion):

Sử dụng $[$CCNetLabel] bên trong cấu hình CCNET dường như không làm việc.

Thành thật mà nói, tôi sẽ rất ngạc nhiên, nếu có. Cấu hình là một cái gì đó tĩnh trong khi CCNetLabel là một cái gì đó năng động, có khả năng thay đổi với mọi xây dựng tích hợp. Giả sử bạn có quyền truy cập vào các thuộc tính động này bên trong cấu hình, cấu hình có thể thay đổi với mọi bản dựng. Kể từ khi thay đổi cấu hình có nghĩa là khởi động lại máy chủ CCNET tự động, bạn sẽ gây ra một máy chủ khởi động lại với mỗi xây dựng. Không thực sự là một hành vi mong muốn, phải không?

+0

Nhìn vào câu hỏi cũ tôi đã đề cập, tôi đã tìm thấy câu trả lời này bởi Nhà tư tưởng: http://stackoverflow.com/questions/1563362/cruisecontrol-net-using-ccnetlabel-inside-ccnet-config-file/2299848#2299848. Tôi sẽ thử giải pháp này vào ngày mai. –

+0

Vâng, tôi cũng sẽ cố gắng vào ngày mai nhãn dán CCnet để có được số sửa đổi svn – TridenT

+0

Không. Không làm việc cho tôi. –

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