6

Tôi có một số tập lệnh PowerShell đơn giản mà tôi đã thực hiện thành tệp thực thi với Bamboo, bằng cách thêm đường dẫn như C:\build-scripts\bamboo-build-scripts\clear-directory.ps1 làm đường dẫn cho tệp thực thi bằng tre. Tuy nhiên, một số tập lệnh, thậm chí là các kịch bản thực thi chính xác trong quá trình xây dựng khi chúng được tạo thành một quá trình "tập lệnh", sẽ thất bại khi chúng được chạy theo cách này, bằng cách đưa mã trả về -1. Dưới đây là ví dụ từ nhật ký dựng:Kịch bản Powershell có thể thực thi cho phép "sai" đưa ra mã trả về -1 trong Bamboo

simple 18-Jun-2015 13:14:06 Failing task since return code of [C:\build-scripts\bamboo-build-scripts\update-checker.ps1 GeometryClassLibrary] was -1 while expected 0 

Điều này xảy ra với nhiều tập lệnh PowerShell và làm cho phần còn lại của quá trình xây dựng thất bại.

Dưới đây là một ví dụ PowerShell kịch bản, mà tôi thực hiện bằng cách truyền tham số vào một thư mục:

Remove-Item $args[0] -Force -Recurse 
[io.directory]::CreateDirectory($args[0]) 

Có một cái gì đó tôi cần phải thêm vào kịch bản PowerShell để làm cho nó thoát với mã có đúng không? Hoặc tôi không xác định thực thi đúng cách trong tre?

+0

Hỗ trợ của Bamboo cho PowerShell dường như đã khiến tôi bị hạn chế trong việc sử dụng hạn chế nó như là các tác vụ kịch bản. –

+0

Chúng tôi đã có thành công tương đối tốt khi sử dụng nó trong các tác vụ kịch bản, nhưng khi một số kịch bản của chúng tôi trở nên phức tạp hơn, có vẻ như có ý nghĩa khi chuyển sang một đối số thực thi và chuyển đối số riêng biệt. Đó là nơi mà vấn đề đã phát sinh: các kịch bản đã làm việc tốt trước khi làm nhiệm vụ kịch bản. – Jake

+0

Tôi đã nhìn thấy nó bỏ qua lỗi (ném lỗi được hiển thị trong nhật ký) và tiếp tục trong quá trình thực thi tập lệnh trước đó. Thêm chế độ nghiêm ngặt và thiết lập theo cách thủ công EA đã giúp một chút với điều đó tôi nghĩ mặc dù. –

Trả lời

0

Bạn có thể thử một vài điều:

Thực hiện Chính sách

Có thể là kịch bản không được thực hiện ở tất cả, có lẽ vì chính sách được đặt không thực hiện chúng. Hãy thử cách gọi powershell.exe trực tiếp:

powershell.exe -ExecutionPolicy Bypass -File C:\build-scripts\bamboo-build-scripts\clear-directory.ps1 

(see this answer for more switches)

Piping

NSClient ++ sử dụng để có vấn đề với cách gọi kiểm tra viết bằng PowerShell do vấn đề với mã thoát. Giải pháp của họ trông giống như sau:

cmd /c echo C:\build-scripts\bamboo-build-scripts\clear-directory.ps1; exit $LastExitCode | powershell.exe -Command - 

Có thể điều đó sẽ cung cấp mã chính xác hơn.

+0

Dưới đây là ví dụ về cách tôi gọi tập lệnh: http://i.imgur.com/wAUXJ3D.png Làm cách nào để tôi sửa đổi tệp thi hành này để phản ánh việc chạy nó theo cách này? – Jake

+0

@Jake Bạn có thể sao chép và dán nội dung tôi đã đăng vào hộp đó không? Tôi đã không sử dụng tre, vì vậy tôi không chắc chắn nếu nó có các tham số và như vậy. – briantist

+1

Tác phẩm thứ hai từ dấu nhắc lệnh, nhưng dán toàn bộ nội dung vào Bamboo dưới dạng tệp thực thi không hoạt động. Nó báo cáo 'Không thể tìm thấy tệp thực thi tại cmd/c echo C: \ build-scripts \ bamboo-build-scripts \ clear-directory.ps1; thoát $ LastExitCode | powershell.exe -Command C: \ build-scripts \ bamboo-build-scripts \ clear-directory.ps1. Sẽ cố gắng chạy nó anyway.' Nếu ai đó với kiến ​​thức cụ thể tre có thể kêu vang trong, đó sẽ là tuyệt vời. – Jake

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