Проект здания из задачи cron - PullRequest
2 голосов
/ 26 декабря 2011

Когда я строю проект из терминала с помощью команды 'xcodebuild', я добиваюсь успеха, но когда я пытаюсь выполнить тот же скрипт из задачи cron, я получаю сообщение об ошибке «Ошибка кода: идентификатор» **** 'не соответствует ни одной действительной паре сертификат / закрытый ключ в цепочке ключей по умолчанию "

Я думаю, что проблема в настройках и разрешениях утилиты crontab, кажетсяcrontab не видит мою цепочку для ключей

Может кто-нибудь дать мне команду терминала, как сделать мою цепочку для ключей видимой для crontab

Ответы [ 3 ]

1 голос
/ 23 марта 2012

Я столкнулся с подобной проблемой при попытке собрать каждую ночь через cron.Единственное решение, которое я нашел, было создать plist в / Library / LaunchDaemons / и загрузить его через launchctl.Необходимым ключом является «SessionCreate», иначе вы быстро столкнетесь с проблемами, похожими на те, с которыми столкнулись при попытке использовать cron, а именно с тем, что ваш пользователь login.keychain не доступен для процесса.«SessionCreate» похож на «su -l» в том, что (насколько я понимаю) имитирует вход в систему и, таким образом, ожидаемые цепочки ключей по умолчанию будут доступны;в противном случае вы застряли только с системной цепочкой для ключей, несмотря на то, что задача выполнялась от имени вашего пользователя.

Я нашел ответы (хотя и не самый верхний в настоящее время) здесь полезные при устранении неполадок при решении этой проблемы: Отсутствуют сертификаты иключи в связке ключей при использовании Jenkins / Hudson в качестве непрерывной интеграции для разработки под iOS и Mac

0 голосов
/ 26 декабря 2011

Когда скрипт запускается из cron, он не загружает ваш $ HOME / .profile (или .bash_profile). Все, что вы запускаете из cron, должно быть на 100% самодостаточным с точки зрения среды. Я бы посоветовал вам создать файл с именем что-то вроде "set_build_env.sh". Он должен содержать все из вашего .profile, который вам нужно собрать, например, $ PATH, $ HOME, $ CLASSPATH и т. Д. Затем в вашем скрипте сборки загрузите set_build_env.sh, используя точечную нотацию или исходный cmd, как сказал ericc. Вам также следует удалить специфичные для сборки строки из вашего .profile, а затем оттуда также установить исходный файл set_build_env, чтобы поддерживать только одно место. Пример: source /home/dmitry/set_build_env.sh #absolute path , /home/dmitry/set_build_env.sh # Точечная нотация такая же, как и у «источника»

0 голосов
/ 26 декабря 2011

Вы выполняете свою работу cron с какой учетной записью?

скорее всего проблема !! Вы можете добавить

echo `whoami`

в начале вашего скрипта, чтобы увидеть, с каким пользователем запускается скрипт.

Также, когда Bash-скрипт запускается из cron, он не использует ту же переменную окружения (не вход в оболочку), что и при запуске его как пользователь.

...