2015-12-06 4 views
0

Моя конфигурация.Подписание кода на Jenkins с дистанционным Mac Mini

Очевидно, что я пытаюсь получить код, работающий на удаленном сервере.

Я считаю, что факт, что у меня есть отдельная учетная запись Apple, означает, что я не могу выдавать «разрешение» другим разработчикам для работы над моим проектом и что у узла не может быть только собственный Apple ID.

Следуя инструкциям плагина, я считаю, что раздел «профили профилей» правильный.

Брелки, по-видимому, не работают. Сначала я загружал файлы .cert и .p12, и он был ошибочен при загрузке. Затем я загрузил весь файл login.keychain, который он успешно проанализировал. Я даю ему пароль для ключей. Я получил строку «identity», украв ее из раздела «информация», щелкнув правой кнопкой мыши по ключу в менеджере ключей; «Разработчик iPhone: William Guynes (XXXXXXXXXX)». Прошедшая успешная загрузка у меня нет способа узнать, правильны ли другие два поля. Я считаю, что желаемым паролем является пароль login.keychain, но описание поля немного расплывчато. Я нашел частично размытый пример строки «identity», но я догадываюсь, где его получить.

Это не тот случай, когда мой ключ был моим именем пользователя и Дженкинсом, используя имя пользователя «Jenkins». Когда задание отбрасывается на пульт дистанционного управления, он запускается как пользователь с именем «ci». Я могу дать все необходимые разрешения, в том числе напрямую манипулировать своими связующими звеньями. Я не получил этого, чтобы работать, но я чувствую, что обходной взлом вроде этого не должен быть необходим с плагином в первую очередь.

Выходной ток сборки:

Console Output 

Started by user William Guynes 
Building remotely on mini (osx) in workspace /Users/ci/workspace/websocketclient 
> git rev-parse --is-inside-work-tree # timeout=10 
Fetching changes from the remote Git repository 
> git config remote.origin.url ssh://lion.guynes.net/var/git/WebSocketClient.git/ # timeout=10 
Fetching upstream changes from ssh://lion.guynes.net/var/git/WebSocketClient.git/ 
> git --version # timeout=10 
using GIT_SSH to set credentials 
> git -c core.askpass=true fetch --tags --progress ssh://lion.guynes.net/var/git/WebSocketClient.git/ +refs/heads/*:refs/remotes/origin/* 
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10 
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 
Checking out Revision 51c15eabd01c443ef6fee24cc755af60f706a4f0 (refs/remotes/origin/master) 
> git config core.sparsecheckout # timeout=10 
> git checkout -f 51c15eabd01c443ef6fee24cc755af60f706a4f0 
> git rev-list 51c15eabd01c443ef6fee24cc755af60f706a4f0 # timeout=10 
[websocketclient] $ /bin/bash /var/folders/54/kvd8ytzd6yl3d2y7zdxf_ygw0000gp/T/hudson2702132375138804077.sh 
Executing do/all 
Executing do/setup 
Executing do/build 
=== BUILD TARGET WebSocketClient OF PROJECT WebSocketClient WITH THE DEFAULT CONFIGURATION (Release) === 

Check dependencies 
Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) were found. 

** BUILD FAILED ** 

The following build commands failed: 
    Check dependencies 
(1 failure) 
Executing do/test 
Finished: SUCCESS 

Я провел целый день прибегая к помощи и пытается найти ответ. Многие ссылки возвращаются к this blog post, но он описывает ручное копирование файла инициализации и перемещение ключей с «входа» в «Система». Не следует принимать во внимание удаленный сервер. Кажется, это временный взлом для решения проблемы, которую плагин был разработан для решения в первую очередь!

ответ

0

Я мог видеть, что профили настройки копируются в правильный путь с помощью плагина. Я также мог видеть, что он копирует файл login.keychain в корневой каталог рабочей области/{имя_события}.

Пользователю ci необходимо, чтобы login.keychain добавлен в свой путь поиска.

  • плагин предоставляется брелок брелка
  • či пользователя
  • система брелка

Так что я изменил мой сценарий сборки.

system_keychain='/Library/Keychains/System.keychain' 
keychain_list=$(security list-keychains) 
echo "${keychain_list}" | grep "${KEYCHAIN_PATH}" 
ec=$? 
if [[ ${ec} -ne 0 ]] 
then 
    new_keychain_list=(
     ${KEYCHAIN_PATH} 
     $(echo "${keychain_list}" | grep -v "${system_keychain}") 
    ) 
    echo "Setting keychains to" ${new_keychain_list[*]} 
    security list-keychains -s ${new_keychain_list[*]} 
fi 

Если предоставленный брелок еще не находится в пути поиска, добавьте его в начало.Система всегда крепится к концу, когда вы устанавливаете ее так, чтобы она вырезала ее перед выполнением набора.