Jenkins в Mac OS X Я только что закончил настройку сервера сборки в Mac OS X с помощью Jenkins (ранее Hudson). Компания, в которой я работаю (GradeCam), использует git и gitolite для управления версиями, поэтому я не ожидал проблем с использованием Jenkins для создания наших инструментов с помощью плагина git.
Однако я быстро столкнулся с загвоздкой: сервер управления исходным кодом находится на общедоступном адресе, поэтому наш исходный код недоступен, кроме как через ssh, а доступ gitolite ssh использует аутентификацию с закрытым ключом. Что ж, я опытный системный администратор Unix, так что это не казалось большой проблемой — в конце концов, настройка аутентификации с открытым ключом — это детская игра, верно?
Установка по умолчанию
Установка Jenkins по умолчанию в Mac OS X (на момент написания этой статьи) устанавливает plist Launch Agent в /Library/LaunchAgents/org.jenkins-ci.plist. Этот файл plist заставляет Jenkins загружаться как пользователь «демон», что звучит нормально, за исключением того, что домашний каталог для пользователя «демон» — /var/root, такой же, как и для пользователя root. Это означает, что каталог .ssh никогда не будет иметь правильных разрешений для использования закрытого ключа.
Создание нового скрытого пользователя
Мое решение состояло в том, чтобы создать нового «скрытого» пользователя для запуска Дженкинса. Следуя инструкциям, которые я нашел в сообщении в блоге, я создал пользователя «jenkins» с домашним каталогом «/Users/Shared/Jenkins/Home»:
sudo dscl . create /Users/jenkins
sudo dscl . create /Users/jenkins PrimaryGroupID 1
sudo dscl . create /Users/jenkins UniqueID 300
sudo dscl . create /Users/jenkins UserShell /bin/bash
sudo dscl . passwd /Users/jenkins $PASSWORD
sudo dscl . create /Users/jenkins home /Users/Shared/Jenkins/Home/
Затем я остановил Jenkins: “sudo launchctl unload -w
/Library/LaunchAgents/org.jenkins-ci.plist”
и отредактировал файл plist, чтобы установить имя пользователя jenkins вместо daemon.
“chown -R jenkins: /Users/Shared/Jenkins/Home”
устанавливает разрешения такими, какими они должны быть, а затем “sudo launchctl
load -w /Library/LaunchAgents/org.jenkins-ci.plist”
заставит вас работать!
Чтобы запустить git через ssh, «sudo su — jenkins», чтобы получить консоль от имени пользователя jenkins, настроить ключи ssh и тому подобное. Убедитесь, что вы можете использовать ssh туда, куда вы хотите перейти (или даже выполнить тестовое клонирование git), потому что вам нужно сохранить ключи, чтобы они не запрашивались, когда jenkins пытается выполнить клонирование.
Это должно сделать вас! Надеюсь, это поможет кому-то.