Аутентификация Jenkins CI для частного репозитория Github

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

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

6 ответов


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

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

просто, когда у вас есть сервер, который должен получить доступ к одному частному РЕПО. Этот ключ прикрепляется непосредственно к репозиторию, а не к личной учетной записи пользователя.

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


теперь для технической части: как использовать ваш ключ SSH с Дженкинсом?

если у вас есть, скажем, a jenkins пользователь unix, вы можете сохранить свой ключ развертывания в ~/.ssh/id_rsa. Когда Дженкинс пытается клонировать РЕПО через 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-адресом в Дженкинс.

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


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


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

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

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


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

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

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

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

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


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

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers batman git

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

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