Composer使用https而不是ssh(用于GitLab)



使用这样的composer.json安装专用包时:

{
"require": {
"foobar/example-package": "dev-master"
},
"repositories": [{
"type": "vcs",
"url": "git@gitlab.com:foobar/example-package.git"
}]
}

由于某种原因,Composer试图使用https而不是ssh

$ composer update
Loading composer repositories with package information
Failed to download foobar/example-package:The "https://gitlab.com/api/v4/projects/foobar%2Fexample-package" file could not be downloaded (HTTP/1.1 404 Not Found)      
Your credentials are required to fetch private repository metadata (git@gitlab.com:foobar/example-package.git)
A token will be created and stored in "…composerhome/auth.json", your password will never be stored
To revoke access to this token you can visit https://gitlab.com/profile/applications
Username:

即使在使用-vvv时,也没有迹象表明Composer为什么需要通过https访问存储库,而完全可以通过ssh(使用存储在SSH代理中的私钥(将代码推送到专用存储库。

Composer 1.x和2.x会发生这种情况。难道没有办法使用ssh进行这样的操作吗?这个问题似乎也是GitLab特有的,因为我从未在GitHub存储库中遇到过它。

双重检查"从GitLab的私有存储库安装composer包";来自Syed Sirajul Islam Anik

因此,要从GitLab安装不是公共存储库的软件包,需要一个个人访问令牌
您可以通过进入配置文件图标> Settings > Access Token来发布PAT。然后,要发布新的PAT,请写一个名称并选择一个范围api/read_api, read_api是最小值。api也会起作用。如果你想设置一个到期日,可以在其中输入值。然后按下创建个人访问令牌按钮。

接下来,从终端开始。运行以下命令。

composer config--global--auth gitlab-token.gitlab.com PAT_token

PAT_TOKEN替换为您在上述过程中找到的令牌。如果你使用的是自托管的GitLab,那么你需要将URLgitlab.com更改为自托管的URL。

然后,在您的composer.json文件中,添加以下片段。

"repositories": [
{
"type": "vcs",
"url": "git@gitlab.com:namespace/repo-name.git"
}
]

或者,如前所述,使用"type": "git"而不是"vcs":

"repositories": [
{
"type": "git",
"url": "git@gitlab.com:namespace/repo-name.git"
}
]

如果composer.json文件已经包含存储库密钥,则将对象添加到其中。

最后,

composer require vendor-name/package-name

换句话说,即使URL是SSH,您仍然需要一个PAT(令牌(来使用composer调用的HTTPS GitLab API。

感谢@rob006将vcs更改为git将解决此问题。

他/她在评论中提到了这一点,也许有些人没有注意到,所以我重复一遍,作为一个答案,也许可以帮助别人。

相关内容

  • 没有找到相关文章

最新更新