Непрерывная интеграция с ботами Xcode

Я хочу сделать непрерывную интеграцию с использованием ботов Xcode. Я установил OSX Mavericks и сервер (версия 3). Я могу создавать ботов, используя Xcode 5.0.1. Во время интеграции успешно выполняется анализирующее тестирование, но конечным результатом интеграции всегда является сбой.

Интеграция не удалась. Неожиданная внутренняя ошибка сервера. Подробнее см. в журналах интеграции.`

Я ничего не понял из журналов ошибок сервера. Он не работает из-за некоторых ошибок, связанных с вики-сервисом.

Может кто-нибудь помочь мне?

Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:233 7e026310 +0ms] didReceiveData
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:246 7e026310 +2ms] connectionDidFinishLoading
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:172 7e026310 +0ms] Out of runloop; request completed
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceProxy.m:79 7e026310 +0ms] Received successful response.
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Info>: [CSConfig.m:55 7e026310 +0ms] Reading plist at /Library/Server/Wiki/Config/collabd.plist
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [XCSBuildHelper.m:97 7e026310 +0ms] Updating bot run with GUID fc16d3af-093e-44aa-8a40-ebfef45bbbd9
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [XCSBuildHelper.m:102 7e026310 +0ms] Updating bot run (fc16d3af-093e-44aa-8a40-ebfef45bbbd9): {
        guid = "fc16d3af-093e-44aa-8a40-ebfef45bbbd9";
        status = failed;
        subStatus = "internal-error";
    }
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Info>: [CSConfig.m:55 7e026310 +0ms] Reading plist at /Library/Server/Wiki/Config/collabd.plist
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Info>: [CSConfig.m:55 7e026310 +0ms] Reading plist at /Library/Server/Wiki/Config/collabd.plist
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Info>: [CSRemoteServiceClient.m:151 7e026310 +0ms] Connecting to https://localhost:4443/svc to execute [https]Request{XCBotService.updateBotRun:({
        guid = "fc16d3af-093e-44aa-8a40-ebfef45bbbd9";
        status = failed;
        subStatus = "internal-error";
    })}
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:159 7e026310 +0ms] Secure, async request
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:169 7e026310 +0ms] Before runloop; request pending
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:223 7e026310 +157ms] didReceiveResponse
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:225 7e026310 +0ms] response=<NSHTTPURLResponse: 0x7fd24a5a7980> { URL: https://localhost:4443/svc } { status code: 200, headers {
        "Accept-Ranges" = bytes;
        "Content-Length" = 3700;
        "Content-Type" = "x-apple/msgpack";
        Date = "Tue, 29 Oct 2013 04:48:41 GMT";
        Status = 200;
        "X-Apple-collabd" = yes;
    } }
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:233 7e026310 +0ms] didReceiveData
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:246 7e026310 +0ms] connectionDidFinishLoading
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:172 7e026310 +0ms] Out of runloop; request completed
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceProxy.m:79 7e026310 +0ms] Received successful response.
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [XCSBuildHelper.m:108 7e026310 +0ms] Updating bot with GUID 4e122aa2-56dd-4e3a-ad6e-25be1a65e657
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [XCSBuildHelper.m:117 7e026310 +0ms] Updating bot with latest bot run GUID key
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [XCSBuildHelper.m:124 7e026310 +0ms] Updating bot (4e122aa2-56dd-4e3a-ad6e-25be1a65e657): {
        guid = "4e122aa2-56dd-4e3a-ad6e-25be1a65e657";
        latestFailedBotRunGUID = "fc16d3af-093e-44aa-8a40-ebfef45bbbd9";
        latestRunStatus = failed;
        latestRunSubStatus = "internal-error";
    }
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Info>: [CSConfig.m:55 7e026310 +0ms] Reading plist at /Library/Server/Wiki/Config/collabd.plist
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Info>: [CSConfig.m:55 7e026310 +0ms] Reading plist at /Library/Server/Wiki/Config/collabd.plist
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Info>: [CSRemoteServiceClient.m:151 7e026310 +0ms] Connecting to https://localhost:4443/svc to execute [https]Request{XCBotService.updateBot:({
        guid = "4e122aa2-56dd-4e3a-ad6e-25be1a65e657";
        latestFailedBotRunGUID = "fc16d3af-093e-44aa-8a40-ebfef45bbbd9";
        latestRunStatus = failed;
        latestRunSubStatus = "internal-error";
    })}
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:159 7e026310 +0ms] Secure, async request
Oct 29 10:18:41 AnilV-InetliMac.local xcsbuildd[11285] <Debug>: [CSRemoteServiceClient.m:169 7e026310 +0ms] Before runloop; request pending

person Anil Varghese    schedule 29.10.2013    source источник
comment
Какой репозиторий вы используете? У меня возникла проблема с использованием простого репозитория SVN. Но я решил это, включив svn+ssh и аутентификацию с открытым ключом.   -  person gamma    schedule 13.11.2013
comment
@gamma Я использую размещенный репозиторий SVN (требуется аутентификация по паролю). Это централизованный репозиторий, который предоставляет моя компания.   -  person Anil Varghese    schedule 13.11.2013
comment
Да, примерно такой же набор был. Единственным способом было выяснить, как заставить работать svn+ssh. Я установил SSHService (Cygwin), создал схему аутентификации для аутентификации PublicKey только для пользователя, который работал с Xcode, и для моего локального пользователя. Я еще не понял, как это сделать с авторизацией по паролю. Если хотите, я могу создать ответ с полным описанием   -  person gamma    schedule 13.11.2013
comment
Конечно ... можете ли вы опубликовать ответ, описав пошаговую процедуру настройки svn + ssh для работы   -  person Anil Varghese    schedule 13.11.2013


Ответы (3)


Проблема, похоже, в том, что боты XCode5 не знают, как использовать чистый svn. Вы должны использовать svn+ssh.

[ОБНОВЛЕНИЕ] Вы также можете использовать git... синхронизированный с вашим SVN. Рабочий процесс немного отличается, но работает отлично.

Я нашел это сегодня: subgit

Он отлично интегрируется в GIT и SVN, вы можете настроить репозитории GIT на сервере Xcode и обновить их с помощью subgit — они оба будут синхронизированы. (у меня ушло около получаса, чтобы полностью понять, как это работает)

Лучше всего то, что лицензия на 10 рабочих мест (имеется в виду 10 соавторов через subgit) совершенно бесплатна (и этого вполне достаточно для моего варианта использования).

[ПРЕДЫДУЩИЙ ОТВЕТ] Я сделал простое решение, в котором используется сервер SSH на компьютере с сервером SVN. Думаю, неважно какой, но я сейчас использую Cygwin.

В /etc/sshd_config нужно добавить подсистему

Subsystem "svnserve -t" /etc/svnserve-proxy

Вам нужно создать файл /etc/svnserve-proxy

cat > /etc/svnserve-proxy
#!/bin/bash
svnserve -t -r <repository>

Вы должны изменить команду svnserve и repository соответственно. На вашем локальном компьютере вы должны изменить файл ~/.subversion/config и добавить строку [tunnels]:

[tunnels]
ssh = $SVN_SSH ssh -v -l <username> -s

username — это имя пользователя, с которым вы хотите пройти аутентификацию. Это решение быстрое и грязное и не позволяет аутентифицироваться разным пользователям. Кроме того, Xcode необходимо использовать одно и то же имя пользователя на вашем локальном компьютере и на бот-сервере. Вполне возможно, что вам придется создать домашнюю директорию _teamsuser и поместить в нее subversion/config.

Альтернативой может быть использование открытых ключей (поскольку бот-сервер уже создает). Затем вы можете поместить их в authorized_keys и поставить команду впереди:

command="svnserve -t -r <repository> --tunnel-user=<user>" rsa-ssh AAA
person gamma    schedule 13.11.2013
comment
Я пытался получить эту настройку с открытыми ключами, но не могу создать бота в xcode! Я застреваю в настройке репозитория/учетной записи: Xcode -> Настройки -> вкладка «Учетные записи» Добавить репозиторий Введите адрес svn + ssh Введите Subversion Он запрашивает имя пользователя и пароль, но некуда вводить ключ. На стороне настройки сервера вы можете вставить ключевой текст. Когда я нажимаю «Добавить», появляется надпись «Проверка учетных данных...», а затем просто отображается баннер ssh-сервера в большом всплывающем окне. -update OMG Я УДАЛИЛ БАННЕР И ЕГО АУТЕНТИФИКАЦИЮ - person hooby3dfx; 08.02.2014
comment
+1 за обновление ответа и добавление пути subgit. git также имеет git svn для этого. atlassian.com/git/tutorials/migrating-overview - person thesummersign; 29.04.2015

У меня была похожая проблема. В моем случае это была проблема с доступом к репозиторию исходного кода. У сервера OSX была проблема с DNS, из-за которой он не мог связаться с хостом. Можете ли вы проверить, можете ли вы получить доступ к хранилищу исходного кода?

person Truth    schedule 29.10.2013
comment
Как это проверить? Как вы решили свою проблему. В моем репозитории включен прокси, и для него требуется аутентификация. Я предоставил необходимые учетные данные серверу OSX. Я думаю, что он может получить доступ к репозиторию, поскольку интеграция дает сбой только на последнем этапе после анализа и тестирования. Окончательный результат всегда провал - person Anil Varghese; 30.10.2013
comment
Понимаю. Можете ли вы вставить то, что он показывает, в свой журнал интеграции? Вы найдете его на странице сведений о вашем боте после того, как вы выбрали свой недавний запуск слева. - person Truth; 01.11.2013

Благодаря Xcode 9 Apple упрощает непрерывную интеграцию с ботами Xcode.

Встроенный сервер Xcode. Боты непрерывной интеграции можно запускать на любом Mac с Xcode 9, не нужно устанавливать macOS Server.

Я нашел очень хорошую статью, объясняющую, как настроить его с помощью Xcode 9.

Xcode9 — комплексная непрерывная интеграция сервера Xcode с iOS

person RayofHope    schedule 13.06.2017