我在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": "*",
},
...
只要存储库是公共的,这就可以工作。现在我将此存储库设置为私有。我用来拉/推到'my_private_repo'的git凭证是该项目的合作者之一。当我运行 composer update 或 composer install 时,如何从该私有存储库中获取该作曲家?
答案 0 :(得分:27)
在GitHub和BitBucket上使用私有存储库:
<强> JSON 强>
{
"require": {
"vendor/my-private-repo": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:vendor/my-private-repo.git"
}
]
}
唯一的要求是为git客户端安装SSH密钥。
答案 1 :(得分:12)
我希望我的回答不会太晚,因为我刚刚学会了这一点。还进入了我的博客:https://keevitaja.com/posts/using-github-private-repositories-as-composer-dependencies
您可以使用ssh-keygen命令生成n + 1个ssh密钥。确保在服务器中执行此操作!
➜ ~ 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]-----+
使用ssh-keygen命令后,系统将提示您输入文件名和密码。您需要为每个将用作作曲家依赖关系的私有存储库的密钥。在此示例中,repo1是文件名。
确保将密码短语留空。
在服务器〜/ .ssh / config文件中,您可以为每个GitHub存储库分配别名。否则,composer会尝试使用默认的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.json文件中,您需要添加所需的存储库作为依赖项:
"repositories": [
{
"type": "vcs",
"url": "repo1:YourAccount/repo1.git"
},
{
"type": "vcs",
"url": "repo2:YourAccount/repo2.git"
}
],
repo1和repo2是您在〜/ ssh / config文件中创建的别名。 repo1的完整GitHub ssh url将是:
git@github.com:YourAccount / repo1.git
现在你应该做好。您现在可以要求您的依赖项:
composer require youraccount/repo1 -n
composer require youraccount/repo2 -n
NB!当使用GitHub存储库作为编辑器依赖项时,您总是需要为每个编写器命令添加-n。
答案 2 :(得分:0)
1。指向Git存储库
更新composer.json并添加一个存储库:
"repositories":[
{
"type": "vcs",
"url": "git@github.com:vendor/secret.git"
}
]
2。创建SSH密钥
在要安装该软件包的计算机上创建一个SSH密钥。
如果在开发计算机上工作,则可能要将SSH密钥添加到GitHub / BitBucket / GitLab帐户。这样就可以访问您帐户有权访问的所有私有存储库。
有关如何添加Github,Bitbucket或Gitlab SSH密钥的更多信息,请参见此excellent article
如果要配置部署服务器,最好配置访问密钥或部署密钥。访问密钥仅提供对单个存储库的访问,因此可以进行更具体的访问管理。
3。运行作曲家
现在,仅作曲家就可以像平常一样要求或composer install
包裹。
答案 3 :(得分:0)
在命令行中,可以使用以下命令配置存储库,让composer确保在composer.json文件中保留有效的json:
composer config repositories.my_alias \
'{"type": "vcs", \
"url": "git@git.example.com:my_repo.git", \
"ssh2": { "username": "git", \
"privkey_file": "/var/lib/jenkins/.ssh/id_rsa", \
"pubkey_file": "/var/lib/jenkins/.ssh/id_rsa.pub" \
} \
}'
注意::我尚未使用引号属性内的''''行连续标记进行测试。我成功的测试包括在一条线上运行所有这些。但是我发现这种格式对于人类来说更容易理解。
更多说明:此命令将继续引发错误,直到您的ssh-keygen
密钥对到位并且在回购中配置了公共密钥为止,如对此其他答案所述问题。
运行此命令的结果是我的composer.json文件中的以下条目:
"repositories": {
"drupal": {
"type": "composer",
"url": "https://packages.drupal.org/8"
},
"my_alias": {
"type": "vcs",
"url": "git@git.example.com:my_repo.git",
"ssh2": {
"username": "git",
"privkey_file": "/var/lib/jenkins/.ssh/id_rsa",
"pubkey_file": "/var/lib/jenkins/.ssh/id_rsa.pub"
}
}
},