Избавление от дубликата системной цепочки для ключей в списке цепочек для ключей с помощью jenkins, запущенного в качестве ведомого Mac OSX через StartupItem - PullRequest
1 голос
/ 27 марта 2012

Я создаю свои iOS-проекты от раба Дженкинса и получаю странные результаты. Если я пытаюсь построить свой проект из командной строки, как это делает Дженкинс, проблем не возникает. Но Дженкинс продолжает говорить мне, что личность появляется в брелке несколько раз. Идентификация не дублируется, я проверял много раз.

Я запускаю ведомого jenkins как мой пользователь (используя sudo -u, ps показывает правильного пользователя) из StartupItem . Сертификат подписи, его закрытый ключ и промежуточный сертификат WWDR развернуты в Системной цепочке для ключей , поскольку я не могу получить доступ к jenkins цепочки для ключей входа в систему из StartupItem.

Немного покопавшись в SO и Google, я обнаружил, что это может быть связано с тем, что указано в этом вопросе:

Отсутствие сертификатов и ключей в цепочке для ключей при использовании Jenkins / Hudson в качестве непрерывной интеграции для разработки под iOS и Mac

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

+ security list-keychains
    "/Library/Keychains/System.keychain"
    "/Library/Keychains/applepushserviced.keychain"
    "/Library/Keychains/System.keychain"

Но это не работает для меня, xcodebuild постоянно говорит: «Идентификатор сертификата« XXXXXX »появляется более одного раза в цепочке для ключей» и, похоже, связан с тем, что в списке цепочек для ключей есть дубликат System.keychain.

Я не могу найти способ оставить только один System.keychain в списке, я попытался:

  • Выполнение первого сценария с использованием списков ключей безопасности -s для изменения списка без удачи
  • Очистить все сертификаты и ключи и начать заново
  • Сброс цепочек для ключей
  • Создание выделенного пользователя для службы jenkins, пытающегося избежать беспорядка от предыдущего пользователя, но, похоже, что-то более общесистемное, связанное
  • Сброс базы данных LS

Есть какие-нибудь подсказки от кого-нибудь?

Я пытался оставить комментарий к предыдущему указанному вопросу, но я новичок, я не могу этого сделать, и отвечать не кажется вежливым, так как мне нужно что-то спросить, я не отвечаю. Так что любой ответ через этот вопрос будет оценен. Заранее спасибо!


Окружающая среда:

  • OSX Lion 10.7.3
  • Xcode 4.3
  • Обновлены инструменты командной строки Xcode
  • Дженкинс вер. 1.456 и новейшие плагины.

Ответы [ 3 ]

2 голосов
/ 12 апреля 2012

В настоящее время это не может быть сделано с помощью StartupItem ... Я наконец-то решил проблему с помощью LaunchDaemon на основе ответа от связанной SO.Это LaunchDaemon, который я использую:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>GroupName</key>
        <string>wheel</string>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>org.jenkins-ci</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/bin/java</string>
                <string>-jar</string>
                <string>/Users/jenkins/work/slave.jar</string>
                <string>-noCertificateCheck</string>
                <string>-jnlpUrl</string>
                <string>https://MySERVER/jenkins/computer/MacOSX/slave-agent.jnlp</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>UserName</key>
        <string>jenkins</string>
        <key>SessionCreate</key>
        <true/>
</dict>
</plist>
1 голос
/ 11 апреля 2012

Итак, я вижу этот список цепочек для ключей, когда запускаю Jenkins из launchctl как LaunchDaemon. Независимо от того, какого пользователя я советую использовать launchctl при запуске, я всегда вижу только эти цепочки для ключей.

Чтобы изменить это поведение, я запустил Jenkins из списка launchd как LaunchAgent. Использование Jenkins для составления списка цепочек для ключей в этом случае показывает пользователям цепочку для ключей входа в систему и цепочку для ключей системы, а не слегка странный список «System, applepushserviced, System».

0 голосов
/ 23 апреля 2012

Это также можно исправить, открыв Access Keychain, Edit, Keychain List и удалив System keychain из списка User. Это все еще доступно от Системы.

...