Сервер OS X - бот не может получить исходный код из репозитория

У меня была настроена и работала предыдущая версия OS X Server, но когда я установил обновление до 3.2.1, я обнаружил, что ни один из моих ботов не работает правильно. Вот проблемы, которые я получаю при каждой попытке интеграции:

Ошибка службы сборки Не удается поместить данные в буфер (-1).

Предупреждение службы сборки. Не удалось выполнить операцию управления исходным кодом, так как не удалось найти рабочую копию.

Предупреждение службы сборки Произошла ошибка при обновлении существующей проверки. Возвращаемся к чистой кассе..

Возможно, я ищу не в том месте, но я думаю, что ошибки означают, что я не могу подключиться к моему репозиторию Git. Это частично подтвердилось, когда я удалил свой репозиторий из Xcode, снова запустил бота и получил те же ошибки. (С тех пор я повторно добавил репозиторий в Xcode и выполнил Check Out, чтобы проверить его, поэтому я почти уверен, что у меня есть все данные о подключении.)

Я уверен, что в предыдущей версии OS X Server я подключался к репозиторию напрямую с сервера, как описано в Help > Server Tutorials > Automate Xcode builds:

Шаг 3. Предоставьте сервису Xcode доступ к репозиторию git

Боты службы Xcode получают доступ к проектам и коду из исходного репозитория git.

Нажмите «Репозитории», затем нажмите кнопку «Добавить» (+). Выберите «Подключиться к репозиторию Git» во всплывающем меню «Новый репозиторий».

Но в последней версии, когда вы нажимаете кнопку «Добавить», вы просто получаете возможность создать новый репозиторий, а не подключаться к существующему. И инструкции в Интернете (сейчас) говорят:

Подключение к удаленным репозиториям

Если у вас есть проекты в репозиториях Git или Subversion на удаленных серверах, вы можете сохранить свои учетные данные для них на своем Mac для разработки в настройках учетных записей в Xcode. Тогда, когда вам понадобится доступ к репозиториям, вам не придется каждый раз вводить свои учетные данные заново.

Чтобы добавить учетные данные удаленного репозитория на Mac для разработки

Чтобы сервер Xcode мог выполнять интеграцию с вашими проектами, он также должен иметь доступ к их репозиториям исходного кода. Настройте сервер Xcode для подключения к удаленным репозиториям.

  • Выберите Xcode › Preferences на Mac для разработки.

  • Щелкните Аккаунты на панели инструментов.

  • Нажмите кнопку «Добавить» (+) и выберите «Добавить репозиторий».

  • В текстовом поле введите URL-адрес репозитория (например, svn+ssh://svn.example.com/ProjectName или https://example.com/git/repository.git) и нажмите кнопку «Далее».

  • Введите имя пользователя и пароль на панели «Репозиторий» в настройках «Учетные записи».

что немного расплывчато, но, похоже, предполагает, что теперь OS X Server использует репозитории, настроенные в настройках Xcode.

Во всяком случае, теперь мой сервер OS X не может получить доступ к репозиторию. Я что-то упустил здесь?

Спасибо

ОБНОВЛЕНИЕ:

Я вернулся к этой проблеме после месяца притворства, что ее не существует, и сделал следующие выводы:

- Проблема возникает с OS X Server 3.2.1, OS X Server 3.2.2 и OS X Server 4.0 на двух разных машинах.

-Проблема возникает, когда репозиторий находится на сервере, на котором работает Gitblit, но не для удаленных репозиториев Bitbucket или для репозитория Git, размещенного на локальном сервере OS X.

-Проблема возникает только для больших репозиториев.


person jimmyjudas    schedule 30.09.2014    source источник
comment
К сожалению, я не могу помочь, кроме как сказать, что я не думаю, что вы что-то упускаете. Я больше не могу указывать сервер Xcode на внешние репозитории SVN или GIT. Я действительно надеюсь, что это ошибка, а не новая реализация, потому что она искалечила эту систему CI для меня!   -  person Sammio2    schedule 01.10.2014
comment
Я только что обновился до OS X Yosemite и OS X Server 4, и у меня все еще та же проблема! Теперь также есть обновление OS X Server 3.2.2, которое вы можете установить только перед обновлением до Yosemite, поэтому было бы интересно посмотреть, решит ли это проблему для кого-либо.   -  person jimmyjudas    schedule 17.10.2014
comment
Привет Жоао. Я сделал - см. принятый ответ ниже. Спасибо   -  person jimmyjudas    schedule 16.01.2015
comment
@Джимми Джудас. Наше репо с битбакетом. но мы видели аналогичную проблему.   -  person Liangjun    schedule 23.07.2015


Ответы (2)


Я решил эту проблему самым запутанным способом, который только можно себе представить!

Когда сервер OS X подключается к репозиторию для загрузки исходного кода, он использует библиотеку Xcode. Xcode использует libgit2 для загрузки, которая имела известная ошибка, вызвавшая ошибку буфера. Это было исправлено в v0.21.2, но последний Xcode (6.1.1) использует только v0.21. Эта предыдущая версия Xcode использовала только v0.20, поэтому мы надеемся, что будущий выпуск Xcode будет использовать v0.21.2+, и в этом случае это исправление не потребуется.

Во всяком случае, решение для Xcode 6.1.1 заключалось в следующем:

  1. Загрузите и разархивируйте версию gitlib, используемую Xcode, отсюда: https://github.com/libgit2/libgit2/releases/tag/v0.21.0
  2. Внесите изменения в src/transports/http.c, как описано здесь: https://github.com/libgit2/libgit2/commit/7d729d0bfd897e8685099b160b6dbfd7f4ebd588
  3. Сохраните файл http.c
  4. Соберите отредактированную версию gitlib2, используя здесь инструкции, т. е.:

    • Download CMake
    • Запустите следующие команды в Терминале после перехода в разархивированную папку libgit2-0.21.0:

      $ сборка mkdir && сборка компакт-диска

      $ cmake ..

      $ cmake --сборка .

  5. В Finder на вашем сервере перейдите в папку «Приложения», щелкните правой кнопкой мыши Xcode и выберите «Показать содержимое пакета». Перейдите в папку Contents/Developer/usr/lib и переименуйте файл libgit2.dylib в libgit2.dylibold или аналогичный.

  6. Возьмите только что созданный файл libgit2.0.21.0.dylib из папки libgit2-0.21.0/build, переименуйте его в libgit2.dylib и скопируйте в папку /Applications/Xcode/Contents/Developer/usr/lib. папка на вашем сервере.

  7. Перезапустите OS X Server и снова интегрируйте своего бота из Xcode.

person jimmyjudas    schedule 28.11.2014
comment
Хотя было весело исправлять одну из dylib Xcode, это не помогло мне. Это не позволило бы мне пройти через экран учетных данных репозитория при создании бота, говоря, что этот транспорт не реализован. Извините (-1), что, я думаю, является ошибкой libgit2. Ну что ж. - person T Blank; 06.12.2014
comment
Привет Трэвис. Жаль слышать, что это не исправило это для вас. Хотя, похоже, у вас была другая проблема для меня. - person jimmyjudas; 16.01.2015
comment
Это действительно решило мою проблему, но следует отметить, что это решение подходит только для серверов git, построенных на основе jgit. - person bolnad; 29.01.2015
comment
Рад это слышать @bolnad. Я предполагаю, что только серверы jgit в любом случае приводят к этой точной ошибке. - person jimmyjudas; 30.01.2015
comment
@TravisB, ты понял это? Я видел ту же ошибку: этот транспорт не реализован. извините (-1). - person Liangjun; 23.07.2015

Удаленный репозиторий будет добавлен при создании бота. Вам не нужно добавлять репозиторий на сервер OSX.

person Kamlesh Katariya    schedule 06.10.2014
comment
Да, спасибо. Но проблема в том, что мои боты, похоже, не могут добраться до репозиториев при интеграции. - person jimmyjudas; 08.10.2014
comment
У меня похожая проблема. Я могу добавить репозиторий в XCode (репозиторий Git, размещенный на сервере TFS, доступ к которому осуществляется через https), но когда я «Продукт->Создать бота», он не проходит проверку с: develop: Неожиданный код состояния HTTP: 404 (-1), хотя я могу используйте систему управления версиями XCode для проверки кода. :| - person Daniel Retief Fourie; 08.10.2014
comment
я 3! У меня точно такая же проблема! - person theiOSDude; 09.10.2014
comment
попробуйте аутентифицироваться через ssh вместо https. - person Kamlesh Katariya; 09.10.2014