web-dev-qa-db-fra.com

Comment ajouter un référentiel github privé en tant que dépendance Composer

J'ai ce qui suit dans mon Laravel 5.1 projets composer.json pour ajouter un référentiel github public comme dépendance.

...    
"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": "*",
},
...

Cela fonctionne tant que le référentiel est public. Maintenant, j'ai défini ce référentiel sur privé. Les informations d'identification git que j'utilise pour tirer/pousser vers 'my_private_repo' sont celles d'un collaborateur du projet. Comment puis-je y parvenir composer extrait de ce référentiel privé lorsque j'exécute mise à jour du compositeur ou installation du compositeur?

21
epic_antihero

Travailler avec des référentiels privés sur GitHub et BitBucket:

[~ # ~] json [~ # ~]

{
    "require": {
        "vendor/my-private-repo": "dev-master"
    },
    "repositories": [
        {
            "type": "vcs",
            "url":  "[email protected]:vendor/my-private-repo.git"
        }
    ]
}

La seule exigence est l'installation de clés SSH pour un client git.

Documents

33
Sofiene Djebali

J'espère que ma réponse ne viendra pas trop tard car je viens de l'apprendre moi-même. A également fait une entrée sur mon blog: https://keevitaja.com/posts/using-github-private-repositories-as-composer-dependencies

Génération d'une clé SSH

Vous pouvez générer n + 1 clés ssh avec la commande ssh-keygen. Assurez-vous de le faire sur le serveur!

➜  ~ 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 user@laptop
The key's 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]-----+

Après avoir utilisé la commande ssh-keygen, vous serez invité à saisir le nom de fichier et la phrase secrète. Vous avez besoin d'une clé pour chaque référentiel privé que vous allez utiliser en tant que dépendance composer. Dans cet exemple, repo1 est le nom du fichier.

Assurez-vous de laisser la phrase secrète et la confirmation vides.

Configurer le ssh pour récupérer la bonne clé

Dans le fichier servers ~/.ssh/config, vous pouvez attribuer un alias à chaque référentiel GitHub. Sinon composer essaie d'utiliser l'id_rsa par défaut.

Host repo1
HostName github.com
User git
IdentityFile ~/.ssh/repo1
IdentitiesOnly yes

Host repo2
HostName github.com
User git
IdentityFile ~/.ssh/repo2
IdentitiesOnly yes

Configuration de Composer

Dans le fichier de projets composer.json, vous devez ajouter les référentiels que vous souhaitez en tant que dépendances:

"repositories": [
    {
        "type": "vcs",
        "url": "repo1:YourAccount/repo1.git"
    },
    {
        "type": "vcs",
        "url": "repo2:YourAccount/repo2.git"
    }
],

repo1 et repo2 sont les alias que vous avez créés dans le fichier ~/ssh/config. L'URL complète de GitHub ssh pour repo1 serait:

[email protected]: YourAccount/repo1.git

Et maintenant, vous devriez être prêt pour de bon. Vous pouvez désormais exiger vos dépendances:

composer require youraccount/repo1 -n

composer require youraccount/repo2 -n

NB! Lorsque vous utilisez des référentiels GitHub en tant que dépendances composer, vous devez toujours ajouter -n à chaque commande composer.

17
Tanel Tammik

1. Pointez vers le référentiel Git

Mettez à jour composer.json et ajoutez un référentiel:

    "repositories":[
      {
        "type": "vcs",
        "url": "[email protected]:vendor/secret.git"
      }
    ]

2. Créez une clé SSH

Créez une clé SSH sur la machine sur laquelle vous souhaitez installer le package.

Si vous travaillez sur une machine de développement, vous souhaiterez probablement ajouter la clé SSH à votre compte GitHub/BitBucket/GitLab. Cela donne accès à tous les référentiels privés auxquels votre compte a accès.

Pour plus d'informations sur la façon d'ajouter des clés SSH Github, Bitbucket ou Gitlab, voir ceci excellent article

Dans le cas où vous configurez un serveur de déploiement, il serait préférable de configurer une clé d'accès ou une clé de déploiement. Une clé d'accès ne donne accès qu'à un seul référentiel et permet ainsi une gestion d'accès plus spécifique.

3. Exécuter le compositeur

Maintenant seulement composer require ou composer install le paquet comme d'habitude.

2
BassMHL