2012-12-05 37 views
8

Tôi đã có thể sử dụng NuGetter để tạo định nghĩa xây dựng để tự động hóa quy trình tạo gói NuGet và tải gói lên kho lưu trữ NuGet.Tự động cập nhật tệp nuspec trong quá trình xây dựng

Nhưng, tôi muốn tự động hóa quy trình hơn nữa. Sau đây là danh sách các bước tôi muốn tự động hóa như là một phần của quá trình xây dựng:

  • Quá trình xây dựng có thể tạo tệp nuspec, thay vì tôi tạo tệp này theo cách thủ công và lưu tệp đó vào nguồn kiểm soát kho lưu trữ cho quá trình xây dựng để nhặt nó lên.
  • Quá trình xây dựng sẽ có thể thay thế các trường nuspec.

Các trường nuspec mà tôi thực sự muốn có thể để tự động hóa là:

giả tôi muốn quá trình xây dựng để thay thế lĩnh vực này trong file nuspec với tên của người là check-in mã.

releaseNotes Tôi muốn quá trình tạo để thay thế trường này trong tệp nuspec bằng nhận xét đăng ký.

Có ai có thể thực hiện việc này không? Nếu vậy, làm thế nào bạn đi về tự động hóa nó?

Trả lời

0

bài này ở đây How to avoid xml document generation when using nuget pack có một số ý tưởng

<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/licenseUrl" Value="http://someurl" />   
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/projectUrl" Value="http://someurl" />   
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/iconUrl" Value="http://somenice.png" />    
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/tags" Value="My.Assembly" />   
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/releaseNotes" Value="Review readme.txt for details." /> 
+0

Bài đăng này không trả lời được câu hỏi của tôi. Tôi có thể tạo gói NuGet, với các tệp nội dung chính xác, trong quá trình xây dựng bằng cách sử dụng các kịch bản PowerShell, hoạt động hoàn hảo. Tôi không cố gắng bao gồm/loại trừ tập tin từ gói NuGet.Vấn đề của tôi là, tôi muốn tạo tệp nuspec trong quá trình xây dựng. Vì vậy, tôi muốn kiểm tra đầu tiên tệp nupsec, lần thứ hai cập nhật các trường tệp nuspec cho Tác giả và releaseNotes, thứ ba kiểm tra tệp nuspec. Ba bước này sẽ xảy ra trước khi NuGetter truy xuất tệp nuspec. –

4

Điều này có thể giúp đỡ.

Tôi đã tạo một quy trình tự động để xuất bản các bản cập nhật cho một dự án nguồn mở.

https://github.com/DefinitelyTyped/NugetAutomation

Một số điều quan tâm đến bạn là có thể.

  • Cách chúng tôi sử dụng PowerShell để sao chép 'mẫu' nuspec và tiêm các trường chúng tôi cần. (bạn có thể sử dụng điều này để thay thế tương tự các trường 'tác giả, releaseNotes')
  • Ping máy chủ nuget công khai để lấy phiên bản hiện tại và tăng phiên bản.

Nó đòi hỏi một số kiến ​​thức về Powershell, nhưng tôi hy vọng nó sẽ giúp bạn bắt đầu.

+0

Cảm ơn bạn đã chia sẻ tập lệnh –

0

Bạn có thể thêm sự kiện xây dựng bài đăng mới kích hoạt tập lệnh lấy phiên bản từ tệp "packages.config" và ghi chúng trở lại tệp nuspec.

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -Command .'$(ProjectDir)..\PathToScirptLocation\NuspecAutoUpdate.ps1' -NuspecPath '$(ProjectDir)API.nuspec' -PackagesConfigPath '$(ProjectDir)packages.config' 

Tôi tải lên tập lệnh và sự kiện xây dựng bài đăng lên GIT của tôi cho bất kỳ ai cần nó.

https://github.com/avrum/NuspecAutoUpdate

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