Назад | Перейти на главную страницу

Jenkins: используйте плагины ssh-agent и git вместе

Итак, у меня такая ситуация: сервер с выделенными пользователями для каждого проекта (например, foo) и сервер jenkins, который работает как jenkins пользователь. Я создал пару ключей SSH для своего foo user и добавил публичный как ключ развертывания в репозиторий github. (Я подтвердил, что могу клонировать репо с foo пользователь)

В Jenkins я настраиваю аутентификацию в «Управление Jenkins»> «Управление учетными данными» как «Имя пользователя SSH с закрытым ключом» с именем пользователя «foo» и fooзакрытый ключ в "глобальной" области.

Итак, я настроил свою работу Jenkins с правильное рабочее место (например. /home/foo/deployment с полным владением для пользователя foo очевидно) и используя учетные данные "foo". Для «управления исходным кодом» я хотел использовать SSH URL моего репо (например, git@github.com: foo / foo.git), однако он сразу же уведомляет меня о проблеме с разрешением:

Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h git@github.com:foo/foo.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied (publickey). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Если я использую https-версию URL-адреса (https://github.com/foo/foo.git) ошибка исчезает, но когда я запускаю задание, я получаю следующие ошибки в выводе консоли:

Started by user developer
[EnvInject] - Loading node environment variables.
Building in workspace /home/foo/deployment
Cloning the remote Git repository
Cloning repository https://github.com/foo/foo.git
 > git init /home/foo/deployment # timeout=10
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Could not init /home/foo/deployment
    [long stacktrace]
Caused by: hudson.plugins.git.GitException: Command "git init /home/foo/deployment" returned status code 1:
stdout: 
stderr: /home/foo/deployment/.git: Permission denied
    [long stacktrace]
ERROR: null
Finished: FAILURE

Ключевая пара не использует кодовую фразу, но я бы хотел добавить ее, если сначала у меня все заработает. Jenkins работает в системе Ubuntu 14.04.2 LTS (GNU / Linux 3.13.0-65-generic x86_64).

Что мне здесь не хватает? Похоже, что предоставленные мной учетные данные не используются, что объясняет, почему они взрываются разрешениями. Но я не понимаю, почему они не используются? И почему нельзя использовать git@ URL?

Поскольку он задыхается от проблемы с разрешением git init Я запустил это вручную в /home/foo/deployment, но при повторном запуске работы Дженкинса он подавляется git fetch, опять же с проблемами с разрешениями.

Ах да, я очень глупый. Пользовательский агент SSH, очевидно, разрешает только jenkins пользователь для подключения к удаленному репо как foo, но не дает ему права на запись в локальную файловую систему ...