2017-06-15 36 views
6

Tôi có một bước Powershell trong một xây dựng TFS mà viết một lỗi cho dòng lỗi và do đó không xây dựng. Tôi muốn bước bỏ qua lỗi và tiếp tục như đã thành công.Làm cách nào để ngăn TFS không thực hiện được bước Powershell khi lỗi được ghi vào luồng lỗi?

Process completed with exit code 0 and had 1 error(s) written to the error stream. 

tôi đã cố gắng thiết lập các tùy chọn Continue on error trong TFS, nhưng kết quả này trong một tình trạng "đã thành công xây dựng một phần", nhưng những gì tôi muốn là cho nó là "thành công".

Tôi cũng đã thử thêm 2>&1 > output.txt vào cuối dòng tạo lỗi, nhưng lỗi vẫn được ghi vào đầu ra TFS và không được ghi trong tệp văn bản.

Lệnh tôi đang thực hiện là lệnh ghép ngắn New-TfsChangeset từ TFS 2015 Power Tools.

+1

Xin chào, tôi không thể sử dụng giải pháp của bạn cũng như không xác minh rằng giải pháp này hoạt động vì chúng tôi đang sử dụng TFS 2015 ngay bây giờ. Tôi upvoted nó tuy nhiên. Để làm việc xung quanh nó, tôi đã vô hiệu hóa các chính sách check-in đã bị lỗi khi check-in với lệnh 'New-TfsChangeset'. TFS 2015 Powertools có lỗi trong đó xung quanh chính sách đăng ký. – GiddyUpHorsey

Trả lời

4

Bạn có thể bỏ chọn Lỗi trên Lỗi chuẩn trong cấu hình tập lệnh quyền hạn của bạn và viết mã cuối cùng để chuyển tác vụ.

enter image description here

Fail trên tiêu chuẩn Lỗi

Nếu điều này là đúng, nhiệm vụ này sẽ thất bại nếu bất kỳ lỗi nào được ghi vào đường ống lỗi, hoặc nếu bất kỳ dữ liệu được ghi vào tiêu chuẩn Lỗi luồng. Nếu không, tác vụ sẽ chỉ dựa vào $ LASTEXITCODE và mã thoát của để xác định lỗi.

Sau đó, bạn có thể xuất ra lỗi hoặc cảnh báo bằng cách sử dụng lệnh tác vụ PowerShell hoặc vst.

Write-Warning “warning” 
Write-Error “error” 
Write-Host " ##vso[task.logissue type=warning;]this is the waring" 
Write-Host " ##vso[task.logissue type=error;sourcepath=consoleapp/main.cs;linenumber=1;columnnumber=1;code=100;]this is an error " 

Thông tin thêm về lệnh VSTS nhiệm vụ, bạn có thể tham khảo: Logging Commands

+0

Đó có phải là bước xây dựng Powershell không? Tôi dường như không có lựa chọn đó. Chúng tôi đang sử dụng TFS 2015. – GiddyUpHorsey

+0

@GiddyUpHorsey Tùy chọn này có sẵn với TFS2017 update2RC hoặc VSTS. Trên TFS2015, tôi e rằng nó không thể bỏ qua nó nếu bất kỳ dữ liệu nào được ghi vào luồng Lỗi Chuẩn cho bước powerhell dựng sẵn. Bạn có thể phải sử dụng tùy chọn * Tiếp tục lỗi *. –

+0

Điều đó thật không may. 'Tiếp tục lỗi 'không hữu ích trong tình huống này. TFS 2015 Powertools dường như không hoạt động đúng với việc chuyển hướng luồng lỗi. – GiddyUpHorsey

0

Các kịch bản sau đây làm việc cho tôi trong VSTS

Write-Host "Running build script..." 
&$CAKE_EXE $cakeArguments **2>&1 | Write-Host** 

Chỉ cần thêm "2>&1 | Write-Host" cho lệnh để luồng stderr sẽ được chuyển đến Luồng ghi trên máy chủ

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