Xcode Server 4.0 git push из скрипта триггера сборки

Я установил Xcode Bot для проекта, размещенного на github. Я выполнил шаги и настроил бота на использование моего существующего ключа SSH. Проверка прошла успешно, и проект будет проверен и построен.

Затем я добавил сценарий оболочки в действие перед триггером, которое увеличивает версию в plist, помечает ее и фиксирует это изменение обратно на github.

Однако, когда я пытаюсь выполнить git push из сценария оболочки, я получаю следующее:

-- Отправка на адрес [email protected]:spex-app/spex-ios.git Отказано в доступе (открытый ключ).

фатальный: Не удалось прочитать из удаленного репозитория.


Почему сервер успешно проверяет мой проект, но не может вносить изменения. Я заметил, что пользователь _xcsbuildd. Я попытался скопировать ключи .ssh в этот /var/_xcsbuildd/.ssh, но это тоже не работает.


person andrewmclean    schedule 13.11.2014    source источник
comment
Не могли бы вы поделиться скриптом, который вы используете для увеличения номера сборки и отправки в git?   -  person Vitalii Boiarskyi    schedule 13.03.2015
comment
Приведенный выше скрипт просто помечает младшую версию коммитом rev из репозитория.   -  person andrewmclean    schedule 14.03.2015


Ответы (2)


Я понял. Вам нужно создать новые ключи для пользователя _xcsbuildd. Затем добавьте их на гитхаб. Внизу этой темы: https://devforums.apple.com/message/1054122#1054122

sudo -u _xcsbuildd /bin/bash
ssh-keygen -t rsa -C "[email protected]"
ssh -T [email protected]
person andrewmclean    schedule 13.11.2014

Принимая во внимание множество других ответов, которые я нашел в Интернете (и на этот вопрос), у меня есть шаги, чтобы заставить это работать в Xcode 6. Во-первых, сделайте то, что указано выше, dmclean (с парой изменений) в вашей сборке сервер:

sudo -u _xcsbuildd /bin/bash
ssh-keygen -t rsa -b 4096 -C "[email protected]" (when asked for a keyphrase, just hit return)
ssh -vT [email protected] (this will show you debugging output - you should not have to enter a keyphrase and it should successfully get to git)

Теперь вам нужно установить этот новый открытый ключ в своей учетной записи git. Выполните следующие действия: (Шаг 4) https://help.github.com/articles/generating-ssh-keys/

Я предполагаю, что у вас есть скрипт сборки для вашего проекта. В нашем проекте есть расширение Share и Watch Extension. Я хотел, чтобы номера сборки увеличивались для каждого (и были одинаковыми для каждого). Номера наших сборок имеют формат A.B.C.D (Major.Minor.Patch.build). Этот «Сценарий запуска» находится на «Фазах сборки» основного проекта. Вот наш скрипт:

#!/bin/sh
# Auto Increment Version Script
# set CFBundleVersion to 1.0.0.1 first!!!
# the perl regex splits out the last part of a build number (ie: 1.1.1.1) and increments it by one
# if you have a build number that is more than 4 components, add a '\d+\.' into the first part of the regex. If you have less remove one
buildPlist=${INFOPLIST_FILE}
newVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$buildPlist" | /usr/bin/perl -pe 's/(\d+\.\d+\.\d+\.)(\d+)/$1.($2+1)/eg'`
echo $newVersion;
/usr/libexec/PListBuddy -c "Set :CFBundleVersion $newVersion" "$buildPlist"
/usr/libexec/PListBuddy -c "Set :CFBundleVersion $newVersion" "$SRCROOT/${PRODUCT_NAME} Extension/Info.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $newVersion" "$SRCROOT/${PRODUCT_NAME} WatchKit Extension/Info.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $newVersion" "$SRCROOT/${PRODUCT_NAME} WatchKit App/Info.plist"
echo "Trying Git Config"
git config user.email "[email protected]"
git config user.name "XCode Build Server"
echo "Trying Git Commit"
git commit -a -m "Updated Build Numbers"
echo "Trying Git Push"
git push

Если это не работает, взгляните на вывод в журнале сборки (под интеграцией).

Some of the problems I encountered:

Поскольку у _xcsbuildd на самом деле нет $HOME, мне пришлось выполнить настройки git, иначе я получал ошибки, когда git не знал, кто я (ошибки идентификации). Если я поместил ключевую фразу в ключ RSA, то это дало мне ошибки открытого ключа при попытке нажать (мне потребовалось немного времени, чтобы понять, как убрать ключевую фразу, чтобы она работала).

Я надеюсь, что это поможет кому-то.

person Arthur Walasek    schedule 04.06.2015
comment
У меня также были проблемы, и если вы вручную перейдете в каталог на сервере сборки, вы можете попробовать все команды. Мне также пришлось настроить поведение push.default в файле конфигурации, я глобально установил файл конфигурации, используя git config --global push.default simple в командной строке сервера, или вы могли бы сделать это в сценарии без --global вариант - person Maria; 09.05.2016
comment
Мне также пришлось клонировать репозиторий с тем же пользователем бота сервера Xcode и использовать ключи ssh и создать нового бота, чтобы он использовал эти конкретные учетные данные. - person Maria; 12.05.2016