Xcode Server 4.0 git нажмите из триггера сборки script

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

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

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

- Нажатие на git @github.com: spex-app/spex-ios.git Разрешение отклонено (publickey).

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


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

Ответ 2

Принимая во внимание многие другие ответы, которые я нашел в Интернете (и по этому вопросу), у меня есть шаги, чтобы сделать эту работу в 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/

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

#!/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-ключ, тогда он дал мне ошибки открытого ключа при попытке нажать (взял меня немного, чтобы понять, чтобы снять ключевую фразу, чтобы заставить ее работать).

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