Как добавить частный репозиторий 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 пакет как обычно.