2016-02-01 21 views
8

Lỗi này xảy ra đôi khi, thường bước này hoạt động tốt, nhưng trong khoảng 10% trường hợp nó không thành công với thông báo dưới đây.TeamCity NuGet Bước cài đặt không thành công

Bước trình cài đặt Nuget là bước xây dựng đầu tiên và cũng "thanh toán sạch" được bật trong TeamCity, vì vậy không nên có bất kỳ quá trình nào sử dụng tệp.

[khôi phục] Quá trình không thể truy cập tệp 'C: \ BuildAgent \ work ... \ packages \ Microsoft.Bcl.Build.1.0.21 \ Microsoft.Bcl.Build.1.0.21.nupkg' bởi vì nó đang được sử dụng bởi một quá trình khác.

[khôi phục] Process thoát với mã 1

Trả lời

6

gốc nguyên nhân của "tập tin của tôi đang được sử dụng bởi quá trình khác"

Có một vài điều bạn có thể làm, tùy thuộc vào nguyên nhân gốc rễ là gì:

  • Bạn sử dụng tính năng xây dựng song song của MSBuild: Theo số blog của mình, có vẻ như không hoạt động tốt với khôi phục gói NuGet, vì nó có thể chạy khôi phục gói song song cho từng dự án (và nếu một vài dự án yêu cầu Microsoft.Bcl.Build ... Boom!). Hoặc là vô hiệu hóa việc xây dựng song song hoặc thực hiện khôi phục gói bên ngoài giải pháp (trong một bước dòng lệnh). Nhân tiện, nó không phải là good practice to do NuGet restore with solution MSBuild.

  • Có một tiến trình khác:
    Sử dụng màn trình/nhà thám hiểm để tìm ra mà quá trình giữ khóa trên các tập tin. Nó có thể là một công cụ lập chỉ mục tệp, chống vi-rút, một phiên bản tác nhân xây dựng bổ sung tiếp tục chạy trong nền. Vì khóa không phải là vĩnh viễn, và 1 trong số 10 là khá nhiều cho loại vấn đề này, tôi sẽ không đặt cược rằng đây là nguyên nhân gốc rễ.

  • Không có quy trình nào khác:
    Đó là lỗi trong trình cài đặt Teamcity NuGet làm điều gì đó. Sau đó, bạn có thể thay thế bước bằng một bước dòng lệnh với một cuộc gọi đến nuget restore và kiểm tra xem nó có khắc phục được sự cố của bạn hay không.

  • Chẩn đoán mình với một plugin NuGet của hương vị của bạn:
    đang NuGet Plugin có sẵn here. Nó có nghĩa là bạn có thể biên dịch một phiên bản của riêng bạn, với thông tin gỡ lỗi bổ sung khi các loại vấn đề xảy ra (danh sách các quá trình khóa tập tin ví dụ). Hoặc thậm chí hữu ích hơn, bạn có thể thêm bước thử lại trong trường hợp tệp bị khóa.

EDIT: Đối với những người sử dụng TeamCity trên Unix ...

Tôi đã cố gắng để cài đặt TeamCity trên Unix và thực hiện một xây dựng trên mono với các plugin NuGet. Nhân tiện, plugin NuGet không hoạt động trên Unix (Nó không được JetBrains hỗ trợ). Tôi thậm chí đã cố sửa nó nhưng dễ dàng thay thế nó bằng một dòng lệnh.

3

Bạn có thư mục làm việc riêng biệt cho mỗi đại lý xây dựng? Nếu không, hai bản dựng song song có thể thực hiện cùng một lúc.

+0

Có, tôi có 2 tác nhân tạo đám mây AWS EC2, cả hai được cài đặt làm đại lý đơn lẻ, trong các trường hợp riêng biệt. (+1 để đề cập đến nó) – Lev

+1

Vâng, tôi sẽ sử dụng một số công cụ kiểm tra khóa như trình thám hiểm quá trình để xác định ai giữ tệp đó khi quá trình tạo không thành công. Nhưng bạn phải có quyền truy cập vào máy chủ đó. – mano

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