Подключение приватного репозитория
Чтобы собрать сервис, платформе нужен доступ на чтение вашего репозитория. Как именно предоставляется доступ, зависит от того, где лежит код.
Когда нужен deploy key
Есть ровно один случай, когда доступ настраивать не нужно, — всё остальное требует ключа:
| Репозиторий | Как подключается |
|---|---|
| Публичный репозиторий на GitHub | по HTTPS, без ключа |
| Приватный репозиторий на GitHub | deploy key |
| Любой репозиторий на GitLab, Bitbucket, Gitea, самохосте (публичный или приватный) | deploy key |
Клонирование по HTTPS без ключа возможно только для публичного GitHub. Для приватного GitHub и для любого другого провайдера — независимо от публичности — используется deploy key по SSH.
Что такое deploy key
Deploy key — это SSH-ключ, дающий доступ только на чтение и только к одному репозиторию. Платформа генерирует пару ключей сама: приватную часть хранит у себя, а публичную отдаёт вам, чтобы вы добавили её в репозиторий. Это безопасно — по этому ключу нельзя ни изменить код, ни попасть в другие репозитории.
Как подключить
- При создании сервиса укажите адрес репозитория и отметьте, что он приватный (или выберите не-GitHub провайдера).
- Платформа сгенерирует и покажет публичный ключ.
- Скопируйте его и добавьте в настройки репозитория, в раздел Deploy Keys (в GitLab и Bitbucket он может называться «Deploy keys» / «Access keys»). Доступа на чтение достаточно.
- Запустите деплой.
Форма адреса репозитория
Адрес можно вводить в любом виде — платформа сама приведёт его к нужной форме клонирования:
https://github.com/owner/repo
git@github.com:owner/repo.git
ssh://git@git.example.com/owner/repo.git
Два ограничения для доступа по SSH:
- Пользователь SSH — только
git. Другие имена пользователя не поддерживаются. - Нестандартный порт SSH — поддерживается через форму
ssh://:ssh://git@git.example.com:2222/owner/repo.git. Это нужно для самохостинга на нестандартном порту.
Частые ошибки
| Симптом | Причина | Решение |
|---|---|---|
| Клонирование не проходит: доступ запрещён | Публичный ключ не добавлен в репозиторий или добавлен не в тот | Добавьте показанный ключ в Deploy Keys нужного репозитория |
| Приватный GitHub клонируется по HTTPS и падает | Для приватного репозитория нужен ключ | Отметьте репозиторий как приватный — платформа выдаст deploy key |
| Самохост на своём порту недоступен | Порт не указан | Введите адрес в форме ssh://git@host:<порт>/owner/repo.git |