Как добавить частный репозиторий github в качестве зависимости от Composer
У меня есть следующие в моем проекте Laravel 5.1 composer.json, чтобы добавить публичный репозиторий github в качестве зависимости.
...
"repositories": [
{
"type": "package",
"package": {
"name": "myVendorName/my_private_repo",
"version": "1.2.3",
"source": {
"type" : "git",
"url" : "git://github.com/myVendorName/my_private_repo.git",
"reference" : "master"
},
"dist": {
"url": "https://github.com/myVendorName/my_private_repo/archive/master.zip",
"type": "zip"
}
}
}
],
"require": {
....
"myVendorName/my_private_repo": "*",
},
...
Это работает до тех пор, пока репозиторий открыт. Теперь я установил этот репозиторий в закрытый. Учетные данные git, которые я использую для вытягивания/нажатия на "my_private_repo", являются одним из конструкторов проекта. Как я могу добиться того, что композитор вытащит из этого частного репозитория, когда я запускаю обновление для композитора или установку композитора?
Ответы
Ответ 1
Работа с частными репозиториями в GitHub и BitBucket:
JSON
{
"require": {
"vendor/my-private-repo": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "[email protected]:vendor/my-private-repo.git"
}
]
}
Единственное требование - установка ключей SSH для клиента git.
Документы
Ответ 2
Я надеюсь, что мой ответ не приходит слишком поздно, так как я только что узнал это сам. Также сделал запись в моем блоге: https://keevitaja.com/posts/using-github-private-repositories-as-composer-dependencies
Генерация ключа SSH
Вы можете создать n + 1 ssh-ключей с помощью команды ssh-keygen. Убедитесь, что вы делаете это на сервере!
➜ ~ cd ~/.ssh
➜ .ssh ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): repo1
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in repo1.
Your public key has been saved in repo1.pub.
The key fingerprint is:
SHA256:EPc79FoaidfN0/PAsjSAZdomex2J1b/4zUR6Oj7IV2o [email protected]
The key randomart image is:
+---[RSA 2048]----+
| . . o .. |
| o B o .. |
| . + B o . |
| . * B = .o|
| S B O B+o|
| o B =.+*|
| o....Bo|
| o E.o|
| +.o |
+----[SHA256]-----+
После использования команды ssh-keygen вам будет предложено ввести имя файла и пароль. Вам нужен ключ для каждого частного репозитория, который вы собираетесь использовать в качестве зависимости композитора. В этом примере repo1 является именем файла.
Убедитесь, что вы оставили парольную фразу и подтверждение пустыми.
Настройка ssh для выбора правильного ключа
В файле ~/.ssh/config вы можете назначить псевдоним для каждого репозитория GitHub. В противном случае композитор пытается использовать значение по умолчанию id_rsa.
Host repo1
HostName github.com
User git
IdentityFile ~/.ssh/repo1
IdentitiesOnly yes
Host repo2
HostName github.com
User git
IdentityFile ~/.ssh/repo2
IdentitiesOnly yes
Настройка Composer
В файле проектов composer.json вам нужно добавить нужные репозитории в качестве зависимостей:
"repositories": [
{
"type": "vcs",
"url": "repo1:YourAccount/repo1.git"
},
{
"type": "vcs",
"url": "repo2:YourAccount/repo2.git"
}
],
repo1 и repo2 - это псевдонимы, которые вы создали в файле ~/ssh/config. Полный ssh-URL GitHub для repo1 будет выглядеть так:
[email protected]: YourAccount/repo1.git
И теперь вы должны быть готовы. Теперь вы можете требовать ваших зависимостей:
composer require youraccount/repo1 -n
composer require youraccount/repo2 -n
NB! При использовании репозиториев GitHub в качестве зависимостей композитора вам всегда нужно добавлять -n к каждой команде композитора.
Ответ 3
1. Укажите на Git-репозиторий.
Обновите composer.json и добавьте репозиторий:
"repositories":[
{
"type": "vcs",
"url": "[email protected]:vendor/secret.git"
}
]
2. Создайте ключ SSH
Создайте ключ SSH на компьютере, на котором вы хотите установить пакет.
Если вы работаете на компьютере разработчика, вы, вероятно, захотите добавить ключ SSH в свою учетную запись GitHub/BitBucket/GitLab. Это дает доступ ко всем частным репозиториям, к которым у вашей учетной записи есть доступ.
Дополнительную информацию о том, как добавить ключи Github, Bitbucket или Gitlab SSH, смотрите в этой превосходной статье.
Если вы настраиваете сервер развертывания, лучше настроить ключ доступа или ключ развертывания. Ключ доступа обеспечивает доступ только к одному репозиторию и, таким образом, обеспечивает более конкретное управление доступом.
3. Запустите композитор
Теперь просто composer require или composer install
пакет как обычно.