Непрерывная интеграция с Xcode Bots

Я хочу сделать непрерывную интеграцию с помощью ботов Xcode. Я установил OSX Mavericks и Server (версия 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

Ответ 1

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

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

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

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

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

[ПРЕДЫДУЩИЙ ОТВЕТ] Я сделал простое решение, которое включает SSH-сервер на машине SVN Server. Я думаю, что неважно, какой из них, но я сейчас использую 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 должен использовать одно и то же имя пользователя на вашем локальном компьютере и Bot-Server. Вполне возможно, что вам нужно создать домашний каталог _teamsuser и разместить там subversion/config.

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

command="svnserve -t -r <repository> --tunnel-user=<user>" rsa-ssh AAA

Ответ 2

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

Ответ 3

С Xcode 9 яблоко приносит легкость непрерывной интеграции с ботами Xcode.

Xcode Server встроен. Непрерывные интеграционные боты могут запускаться на любом Mac с Xcode 9, без необходимости устанавливать сервер MacOS.

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

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