2012-12-31 20 views
8

tôi nhận được lỗi sau trong NuGet Install xây dựng bước khi thiết nguồn đến máy chủ NuGet TeamCity của:TeamCity NuGet cài đặt build bước không làm việc với nhiều nguồn khác nhau, một trong số họ tin NuGet TC ăn

Step 1/4: NuGet install (NuGet Installer) (3s) 

[15:11:19][Step 1/4] scan: Searching for nuget.config files 

[15:11:19][Step 1/4] install: Installing NuGet packages for packages.config (3s) 

[15:11:19][install] NuGet command: C:\TeamCity\buildAgent\tools\NuGet.CommandLine.2.2.0.nupkg\tools\NuGet.exe install C:\TeamCity\buildAgent\work\a4b9de5be22a981\packages.config -OutputDirectory C:\TeamCity\buildAgent\work\a4b9de5be22a981\packages -Source http://localhost:9090/guestAuth/app/nuget/v1/FeedService.svc 

[15:11:19][install] Starting: C:\TeamCity\buildAgent\temp\agentTmp\custom_script96367186180319830.cmd 

[15:11:19][install] in directory: C:\TeamCity\buildAgent\work\a4b9de5be22a981 

[15:11:22][install] The remote server returned an error: (404) Not Found. 

[15:11:22][install] Process exited with code 1 

[15:11:22][Step 1/4] Step NuGet install (NuGet Installer) failed 

Nếu tôi rời khỏi nguồn trường trống, nó sẽ tìm thấy các gói NuGet từ nguồn cấp dữ liệu mặc định (nguồn cấp dữ liệu cộng đồng NuGet) nhưng không phải là các gói được xây dựng và đóng gói cục bộ và được lưu trữ trong nguồn cấp dữ liệu NuGet của TC.

Làm thế nào để bạn sử dụng cả nguồn cấp dữ liệu mặc định và nguồn cấp dữ liệu NuGet của TC nội bộ trong bước xây dựng trình cài đặt NuGet?

+0

Bạn đã thử đặt cả url nguồn cấp dữ liệu Team City NuGet và url nguồn cấp dữ liệu NuGet chuẩn trong bước xây dựng làm nguồn gói? Dòng lệnh NuGet.exe có vẻ như nó chỉ sử dụng một nguồn gói. Tôi cũng sẽ kiểm tra url nguồn cấp dữ liệu Team City NuGet là chính xác và auth guest được bật vì tôi không nghĩ rằng nó sẽ trả về 404. NuGet.exe sẽ trả về một thông báo cho biết gói không được tìm thấy và không phải là 404. –

+0

404 xảy ra bởi vì khi sử dụng% teamcity.nuget.feed.server% trong trường Nguồn gói này sẽ được dịch sang nguồn cấp dữ liệu NuGet của khách (không có xác thực) (giống như http: // localhost: 9090/guestAuth/app/nuget/v1/FeedService.svc). Tuy nhiên, tôi đã tắt nguồn cấp dữ liệu công khai. Đó là lý do tại sao 404. Tôi đã tìm ra được ngay bây giờ. Vẫn đang nghiên cứu về cách làm điều này với nguồn cấp dữ liệu cá nhân và chưa tìm ra giải pháp. – mare

+0

Đây là một vấn đề tương tự đã chỉ cho tôi đi đúng hướng, tuy nhiên nó không hoạt động đối với nguồn cấp dữ liệu TC NuGet riêng tư: http://stackoverflow.com/questions/12897747/how-should-i-tell-teamcitys-nuget-installer- build-step-to-use-both-nuget-org-an – mare

Trả lời

15

Bạn có thể chỉ định nguồn cấp dữ liệu tùy chỉnh chỉ cho giải pháp qua tệp nuget.config.

Điểm mấu chốt là cung cấp thông tin phần packageSourceCredentials như thế này:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <add key="Local" value="http://localhost:9090/httpAuth/app/nuget/v1/FeedService.svc" /> 
    </packageSources> 
    <activePackageSource> 
    <add key="Local" value="http://localhost:9090/httpAuth/app/nuget/v1/FeedService.svc" /> 
    </activePackageSource> 
    <packageSourceCredentials> 
    <Local> 
     <Username>login</Username> 
     <Password>pa$$w0rd</Password> 
    </Local> 
    </packageSourceCredentials> 
</configuration> 

tập tin config này nên bên cạnh sln tập tin trong kho lưu trữ.

+1

Giải pháp này chắc chắn dễ dàng nhưng nó để lại kiểm soát nguồn mật khẩu kho lưu trữ của bạn. Điều này thường được coi là [nguy cơ bảo mật] (http://stackoverflow.com/questions/559611/password-storage-in-source-control). –

+0

Giải pháp này hoạt động ngay cả khi các thông tin đăng nhập không được cung cấp và các gói nằm trên một kho lưu trữ mạng. – Shriroop

3

Điều này có vẻ là known issue cho TeamCity. Cách giải quyết đề xuất thêm nguồn gói qua các khách hàng dòng lệnh và sau đó cập nhật các nguồn với các chứng chỉ ủy quyền:

nuget sources add -name [name] -source [feedUrl] 
nuget sources update -Name [name] -User [username] -pass [password] 

Đó là sự hiểu biết của tôi rằng NuGet sẽ cache những thông tin quan trọng cho các yêu cầu trong tương lai. Tôi không biết tần suất bộ nhớ cache bị xóa; bạn có thể cần chạy nó nget sources update ngay trước khi bạn bắt đầu xây dựng để đảm bảo rằng bộ nhớ cache được kết hợp chặt chẽ.

+0

Chúng được thêm vào người dùng nuget.config. Ví dụ: C: \ users \ john \ appdata \ nuget \ nuget.config Chúng không hết hạn – Sam

3

Chúng tôi đã triển khai hỗ trợ nguồn cấp dữ liệu được xác thực trong plugin TeamCity. Vui lòng làm theo các nhận xét về vấn đề http://youtrack.jetbrains.com/issue/TW-20764

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