2016-10-12 27 views
5

Tôi có thiết lập Travis CI trên GitHub. Tôi sử dụng nó để kiểm tra các cam kết của tôi cho ứng dụng iOS. Vấn đề là, tôi rất thường xuyên và ngẫu nhiên nhận được một lỗi 65. Tôi vẫn chưa tìm thấy một giải pháp.Xây dựng Travis không thành công với lỗi 65

Khi tôi khởi động lại công việc 2-3 lần sau khi nó thất bại, nó vượt qua 90% số lần.

Tôi trước đây cũng gặp sự cố với nhật ký quá chi tiết cho Travis (> 4MB) nhưng tôi đã thêm xcpretty để khắc phục điều đó.

lỗi tôi lấy từ nhật ký:

... 
Generating 'XYZ.app.dSYM' 
❌ error: couldn't remove '/Users/travis/Library/Developer/Xcode/DerivedData/XYZ-aaltcjvmshpmlufpmzdsgbernspl/Build/Products/Debug-iphonesimulator/XYZ.app/SomeName.storyboardc' after command failed: Directory not empty 
... 

Và sau đó ở phần cuối của Travis log:

Testing failed: 
    The file “056-Jj-FAu-view-XmS-Ro-0cO.nib” couldn’t be opened because there is no such file. 
    error: couldn't remove '/Users/travis/Library/Developer/Xcode/DerivedData/XYZ-aaltcjvmshpmlufpmzdsgbernspl/Build/Products/Debug-iphonesimulator/XYZ.app/SomeName.storyboardc' after command failed: Directory not empty 
    error: lipo: can't move temporary file: /Users/travis/Library/Developer/Xcode/DerivedData/XYZ-aaltcjvmshpmlufpmzdsgbernspl/Build/Products/Debug-iphonesimulator/XYZ.app.dSYM/Contents/Resources/DWARF/XYZ to file: /Users/travis/Library/Developer/Xcode/DerivedData/XYZ-aaltcjvmshpmlufpmzdsgbernspl/Build/Products/Debug-iphonesimulator/XYZ.app.dSYM/Contents/Resources/DWARF/XYZ.lipo (No such file or directory) 
    Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil emitted errors but did not return a nonzero exit code to indicate failure 
** TEST FAILED ** 
The following build commands failed: 
    LinkStoryboards 
    LinkStoryboards 
(2 failures) 
The command "./scripts/build.sh" exited with 65. 

Tôi đang sử dụng Xcode 8 cả trong cài đặt Xcode và Travis.

+0

Đó là vấn đề xuất hiện trên các CI khác nhau. Với tất cả các loại khác nhau của trys trên web https://discuss.circleci.com/t/xcode-exit-code-65-ui-tests/7201/13. Nó có vẻ như bằng cách nào đó bắt đầu mô phỏng trước khi lệnh xây dựng với các công cụ khởi chạy là một hack trước Xcode8. Điều đó được cho là không hoạt động nữa. Tôi chưa xem xét các lựa chọn khác nhau. – MrBr

Trả lời

1

Ah, câu hỏi hay. Đôi khi, xcodebuild các bước không thực hiện được trong bước mã hóa có thể được giải quyết bằng cách sử dụng travis_retry - Travis sẽ thử lại bước 3 lần cho bất kỳ trạng thái thoát nào khác, điều này sẽ làm giảm nhu cầu bạn phải khởi động lại theo cách thủ công. Có một số đoạn mã được đề xuất trong số travis-ci/travis-ci GitHub issue về điều này. Chúc may mắn!

+0

Có, tôi đang theo dõi chuỗi đó và đang hoạt động trong đó, như bạn có thể đã thấy :) Thật không may, mô phỏng trước khi hâm nóng không thay đổi bất cứ điều gì đối với tôi. – Fengson

1

Nếu bạn đang chạy vào mã lỗi 65 (từ thất bại ngẫu nhiên) đây là một lệnh bạn có thể đường ống trên hết (kiểm tra giả sử bạn đang chạy) của bạn xcodebuild lệnh để có được kết quả trở lại ổn định hơn:

(XCODEBUILD_COMMAND_HERE) | awk 'BEGIN {success=0} $0 ~ /.* tests, with 0 failures \(.*/ {success=1} {print $0} END {if(success==0){exit 1}}

Điều này tìm kiếm tests, with 0 failures ( trong văn bản đầu ra của bạn, do đó, sử dụng đầu ra văn bản xcodebuild thay vì mã trạng thái xcodebuild để xác định thành công.

Lưu ý: Xin lưu ý, nếu bạn làm điều gì đó như NSLog(' tests, with 0 failures ('); trong mã của mình, bạn thực hiện sai dương tính, rất ít khả năng xảy ra tình cờ. Bạn có thể phải cập nhật tests, with 0 failures ( trong tập lệnh awk giữa các bản cập nhật của xcodebuild. Tuy nhiên, có kết quả phù hợp với xcodebuild chắc chắn đáng giá.

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