2010-10-06 31 views
8

Tôi muốn sử dụng một mục tiêu chạy script để gắn thẻ sửa đổi của tôi trong mercurial và tải nó lên một máy chủ. Tôi đã tạo mục tiêu tập lệnh chạy mới phụ thuộc vào mục tiêu khác đang xây dựng ứng dụng của tôi, sau đó tôi đã thêm hai giai đoạn chạy tập lệnh trực tiếp.Làm thế nào để hủy bỏ xây dựng nếu chạy kịch bản giai đoạn cho một lỗi

Bây giờ câu hỏi của tôi: làm thế nào tôi có thể ngăn chặn thực thi chạy giai đoạn script # 2 nếu chạy giai đoạn script # 1 cho một lỗi (mã trả về của tập lệnh là không bằng 0)?

Tập lệnh thứ hai sẽ tải tệp lên máy chủ, vì vậy, tôi chỉ muốn thực hiện giai đoạn này nếu mọi thứ diễn ra đúng cho đến lúc đó.

Trả lời

11

Một giải pháp sẽ được thường dừng xây dựng khi xảy ra lỗi:

XCode -> Preferences -> Xây dựng -> Xây dựng lựa chọn "Tiếp tục xây dựng sau khi lỗi".

Nếu bạn bỏ chọn điều đó, bản dựng sẽ dừng lại nếu tập lệnh của bạn trả về một cái gì đó không bằng nhau 0 và tập lệnh thứ hai sẽ không được thực thi. Nếu bạn sử dụng xcodebuild, tên cho cài đặt là "PBXBuildsContinueAfterErrors".

+0

Thú vị! Điều đó cũng có thể thiết lập cho một mục tiêu cụ thể? – GorillaPatch

+0

Ý của bạn là thông qua xcodebuild? Nếu bạn đang xây dựng nhiều mục tiêu với một cuộc gọi, chỉ cần chia chúng thành các lệnh xcodebuild khác nhau, mỗi lệnh có một mục tiêu khác nhau ... và -PBXBuildsContinueAfterErrors = 0/1 –

+1

Tôi mặc dù nhiều hơn về các bản dựng được khởi tạo từ Xcode. – GorillaPatch

4

kịch bản đầu tiên của bạn có thể hủy bỏ việc xây dựng với "exit 1", như thế này:

if [ error ] then 
    echo "There are some errors, etc..." 
    exit 1 
fi 
Các vấn đề liên quan