Дженкинс терпит неудачу с Uncaught Exception: *** -[_NSStdIOFileHandle writeData:]: Broken pipe

Я пытаюсь настроить CICD с помощью Jenkins для своего проекта iOS (Xcode 10.2.1). Я использую Fastlane для создания дорожек для тестирования, архивирования и т. д.

Все полосы работают отлично, кроме тестовой полосы. Если я выполняю дорожки, используя терминал напрямую, проблема не регистрируется. Это работает просто отлично. Пожалуйста, найдите тестовую полосу ниже

desc "run tests"
lane :executetest do
begin
            # Something where you'd like to be able to react to failures
  scan(scheme: "iOSProjectTests")

            # If ANY exception happens, let me handle it
            rescue => ex
            # re-raise the exception unless it's something we're OK with ignoring
            # raise ex unless ex.message.include?('Error message of interest')
            # UI.error ex
            # UI.user_error!("Lint check or Test case failed, but continuing anyway!")
        UI.important("There were a few failing test cases. Continuing execution")

        end
end

Но в Дженкинсе, как только начинается тестовая полоса, я получаю исключение ниже, и сборка завершается неудачно,

** INTERNAL ERROR: Uncaught exception while building **
[18:09:51]: ▸ Uncaught Exception: *** -[_NSStdIOFileHandle writeData:]: Broken pipe
[18:09:51]: ▸ Stack:
[18:09:52]: ▸ 0   __exceptionPreprocess (in CoreFoundation)
[18:09:52]: ▸ 1   objc_exception_throw (in libobjc.A.dylib)
[18:09:52]: ▸ 2   +[NSException raise:format:] (in CoreFoundation)
[18:09:52]: ▸ 3   -[NSConcreteFileHandle writeData:] (in Foundation)
[18:09:52]: ▸ 4   IDETestingFileHandleOutputStream.write(_:) (in IDEFoundation)
[18:09:52]: ▸ 5   @objc IDETestingFileHandleOutputStream.write(_:) (in IDEFoundation)
[18:09:52]: ▸ 6   specialized IDETestingMultiOutputStream.write(_:) (in IDEFoundation)
[18:09:52]: ▸ 7   @objc IDETestingFileHandleOutputStream.write(_:) (in IDEFoundation)
[18:09:52]: ▸ 8   specialized IDETestingLaunchSession.parseConsoleOutput(fromOriginalOutput:) (in IDEFoundation)
[18:09:52]: ▸ 9   @objc IDETestingLaunchSession.parseConsoleOutput(fromOriginalOutput:) (in IDEFoundation)
[18:09:52]: ▸ 10   -[IDEConsoleAdaptor _delegateProcessedOutput:] (in IDEFoundation)
[18:09:52]: ▸ 11   -[IDEConsoleAdaptor _getData:fileHandle:overflowBuffer:stringBuffer:] (in IDEFoundation)
[18:09:52]: ▸ 12   -[IDEConsoleAdaptor _getDataFromNotification:overflowBuffer:stringBuffer:] (in IDEFoundation)
[18:09:52]: ▸ 13   -[IDEConsoleAdaptor _getOutputFromNotification:] (in IDEFoundation)
[18:09:52]: ▸ 14   DVTInvokeWithLazyFailureHint (in DVTFoundation)
[18:09:52]: ▸ 15   -[_DVTNotificationReceiver receiveNotification:] (in DVTFoundation)
[18:09:52]: ▸ 16   __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ (in CoreFoundation)
[18:09:52]: ▸ 17   ___CFXRegistrationPost_block_invoke (in CoreFoundation)
[18:09:52]: ▸ 18   _CFXRegistrationPost (in CoreFoundation)
[18:09:52]: ▸ 19   ___CFXNotificationPost_block_invoke (in CoreFoundation)
[18:09:52]: ▸ 20   -[_CFXNotificationRegistrar find:object:observer:enumerator:] (in CoreFoundation)
[18:09:52]: ▸ 21   _CFXNotificationPost (in CoreFoundation)
[18:09:52]: ▸ 22   -[NSNotificationCenter postNotificationName:object:userInfo:] (in Foundation)
[18:09:52]: ▸ 23   -[IDEMasterPtyFileHandle _gotData:] (in IDEFoundation)
[18:09:52]: ▸ 24   __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ (in CoreFoundation)
[18:09:52]: ▸ 25   ___CFXRegistrationPost_block_invoke (in CoreFoundation)
[18:09:52]: ▸ 26   _CFXRegistrationPost (in CoreFoundation)
[18:09:52]: ▸ 27   ___CFXNotificationPost_block_invoke (in CoreFoundation)
[18:09:52]: ▸ 28   -[_CFXNotificationRegistrar find:object:observer:enumerator:] (in CoreFoundation)
[18:09:52]: ▸ 29   _CFXNotificationPost (in CoreFoundation)
[18:09:52]: ▸ 30   -[NSNotificationCenter postNotificationName:object:userInfo:] (in Foundation)
[18:09:52]: ▸ 31   _performFileHandleSource (in Foundation)
[18:09:52]: ▸ 32   __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ (in CoreFoundation)
[18:09:52]: ▸ 33   __CFRunLoopDoSource0 (in CoreFoundation)
[18:09:52]: ▸ 34   __CFRunLoopDoSources0 (in CoreFoundation)
[18:09:52]: ▸ 35   __CFRunLoopRun (in CoreFoundation)
[18:09:52]: ▸ 36   CFRunLoopRunSpecific (in CoreFoundation)
[18:09:52]: ▸ 37   CFRunLoopRun (in CoreFoundation)
[18:09:52]: ▸ 38   -[Xcode3CommandLineBuildTool _buildWithTimingSection:] (in Xcode3Core)
[18:09:52]: ▸ 39   -[Xcode3CommandLineBuildTool run] (in Xcode3Core)
[18:09:52]: ▸ 40   main (in xcodebuild)
[18:09:52]: ▸ 41   start (in libdyld.dylib)

Нигде не мог получить никакой помощи по этому поводу. В проекте написаны только кейсы XCTest по умолчанию. Это даже не настоящий тестовый пример.


person yaali    schedule 18.06.2019    source источник
comment
Я также столкнулся с той же проблемой в xcode 10.2, теперь это работает для вас?   -  person Ashok    schedule 18.07.2019
comment
@Ashok Пожалуйста, обратитесь к моему ответу   -  person yaali    schedule 24.07.2019


Ответы (1)


Я изменил полосу обгона ниже

desc "run tests"
lane :executetest do
begin
            # Something where you'd like to be able to react to failures

   scan(
    scheme: "iOSProjectTests",
    devices: ["iPhone X"],
    output_style: "standard")
            # If ANY exception happens, let me handle it
            rescue => ex
            # re-raise the exception unless it's something we're OK with ignoring
            # raise ex unless ex.message.include?('Error message of interest')
            # UI.error ex
            # UI.user_error!("Lint check or Test case failed, but continuing anyway!")
        UI.important("There were a few failing test cases. Continuing execution")

        end
end

И я использовал Homebrew для запуска jenkins. Вместо этого использовал Jenkins-lts для запуска jenkins. Это устранило указанную выше проблему.

person yaali    schedule 24.07.2019