Аутентифицировать Jenkins CI для частного хранилища Github - PullRequest
132 голосов
/ 06 марта 2011

Я бы хотел, чтобы Дженкинс автоматически получил данные из моего частного репозитория, размещенного на Github.Но я понятия не имею, как выполнить эту задачу. Попробовал документацию, генерирующую ssh-ключ для пользователя jenkins, и все, что я вижу, это: «невозможно клонировать репо».Я проверил URL-адреса - они действительны.

Есть какие-нибудь подсказки, может быть, вы знаете какие-нибудь документы / блоги / что-нибудь еще, которые описывают подобные вещи?

Ответы [ 6 ]

136 голосов
/ 06 марта 2011

Возможно, поддержка GitHub для ключей развертывания - это то, что вы ищете?Чтобы процитировать эту страницу:

Когда мне следует использовать ключ развертывания?

Простой, когда у вас есть сервер, которому требуется доступ с разгрузкой для одного частного репо,Этот ключ прикрепляется непосредственно к хранилищу, а не к личной учетной записи пользователя.

Если это то, что вы уже пытаетесь, и это не работает, вы можете обновить свой вопрос с более подробной информацией.используемых URL-адресов, имен и местоположений файлов ключей и т. д.


Теперь о технической части: как использовать ключ SSH с Jenkins?

Если у вас естьскажем, пользователь jenkins unix, вы можете сохранить свой ключ развертывания в ~/.ssh/id_rsa.Когда Jenkins пытается клонировать репо через ssh, он пытается использовать этот ключ.

В некоторых настройках вы не можете запустить Jenkins как собственную учетную запись пользователя и, возможно, также не можете использовать расположение ключа ssh по умолчанию ~/.ssh/id_rsa.В таких случаях вы можете создать ключ в другом месте, например, ~/.ssh/deploy_key, и настроить ssh, чтобы использовать его с записью в ~/.ssh/config:

Host github-deploy-myproject
    HostName       github.com
    User           git
    IdentityFile   ~/.ssh/deploy_key
    IdentitiesOnly yes

Поскольку все, что вы аутентифицируете для всехРепозитории Github, использующие git@github.com, и вы не хотите, чтобы вышеуказанный ключ использовался для всех ваших подключений к Github, мы создали псевдоним хоста github-deploy-myproject .URL-адрес вашего клона теперь становится

git clone github-deploy-myproject:myuser/myproject

, и это также то, что вы указали как URL хранилища в Jenkins.

(Обратите внимание, что вы должны не поместите ssh: // впереди, чтобы это работало.)

36 голосов
/ 05 августа 2011

Одна вещь, которая заставила меня работать, это убедиться, что github.com находится в ~jenkins/.ssh/known_hosts.

13 голосов
/ 31 января 2012

Если вам нужен Jenkins для доступа к более чем одному проекту, вам необходимо:
1. добавить открытый ключ к одной учетной записи пользователя github
2. добавить этого пользователя как владельца (для доступа ко всем проектам) или какСотрудник в каждом проекте.

Многие открытые ключи для одного системного пользователя не будут работать, потому что GitHub найдет первый соответствующий ключ развертывания и отправит сообщение об ошибке, например "ОШИБКА: доступ пользователю / repo2 запрещен пользователю / repo1"

http://help.github.com/ssh-issues/

6 голосов
/ 09 апреля 2016

Jenkins создает пользователя Jenkins в системе. Ключ ssh должен быть сгенерирован для пользователя Jenkins. Вот шаги:

sudo su jenkins -s /bin/bash
cd ~
mkdir .ssh // may already exist
cd .ssh
ssh-keygen

Теперь вы можете создать учетные данные Jenkins, используя ключ SSH На приборной панели Jenkins Добавить учетные данные

выберите эту опцию

Закрытый ключ: от мастера Дженкинса ~ / .ssh

1 голос
/ 24 мая 2013

У меня была похожая проблема с gitlab. Оказывается, я ограничил пользователей, которым разрешено входить через ssh. Это не повлияет на пользователей github, но в случае, если люди окажутся здесь из-за проблем с gitlab (и тому подобным), убедитесь, что вы добавили git к параметру AllowUsers в /etc/ssh/sshd_config:

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers batman git
0 голосов
/ 05 марта 2012

Альтернативой ответу от sergey_mo является создание нескольких ключей ssh ​​на сервере jenkins.

(Хотя, как сказал первый комментатор в ответе sergey_mo, это может оказаться более болезненным, чем управление одной парой ключей.)

...