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

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

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

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

Поэтому я настроил свою работу Jenkins с помощьюправильное рабочее пространство(например, /home/foo/deploymentс полной собственностью пользователя, fooочевидно) ииспользуя учетные данные "foo". Для «Управления исходным кодом» я хотел использовать SSH URL моего репозитория (например,[email protected]:foo/foo.git) Однако он сразу же уведомляет меня о проблеме с правами доступа:

Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h [email protected]: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) box.

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

Так как он подавляется из-за проблем с разрешениями, git initя запустил его вручную в /home/foo/deployment, но при повторном запуске задания Jenkins он подавляется git fetch, снова из-за проблем с разрешениями.

решение1

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

Связанный контент