GitLab:Composer 使用 ssh 密钥安装私有存储库(仍然出现下载失败的错误)

Phi*_*ine 5 gitlab composer-php

我从私有存储库的本地计算机克隆没有问题,但是,当我想通过 Composer 下载文件时,它要求我创建一个 auth.json 文件(我不想要这个,我也不想使用令牌)。

您知道为什么会发生这种情况吗?

作曲家.json

"require": {
..
"myname/my-app": "*",
..
},
"repositories": [
        {
            "type": "vcs",
            "url": "git@gitlab.com:myname/my-app.git",
        },
]
Run Code Online (Sandbox Code Playgroud)

我尝试添加"no-api": true,我尝试设置dev-master但失败了。为了测试它,我创建了一个 BitBucket 存储库,安装它没有任何问题。

我的错误是:

Loading composer repositories with package information
Failed to download myname/my-app:The "https://gitlab.com/api/v4/projects/myname%2Fmy-app" file could not be downloaded (HTTP/1.1 404 Not Found)
Your credentials are required to fetch private repository metadata (git@gitlab.myname/my-app.git)
A token will be created and stored in "/Users/myname/.composer/auth.json", your password will never be stored
To revoke access to this token you can visit gitlab.com/profile/applications
Run Code Online (Sandbox Code Playgroud)

Lui*_* C. 9

几天前我们也遇到了同样的问题。问题是 GitLab 公共 Api 没有公开 Composer 所需的存储库的默认分支名称。到目前为止我们找到的唯一解决方案是:

  1. 转到您的 GitLab 帐户并创建具有读取权限的 api 令牌
  2. 打开composer.json并添加以下内容:

    "config": {
        "gitlab-token": {
            "gitlab.com": "YOUR_TOKEN"
        }
    },
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行作曲家安装

PS 请谨慎使用此解决方案,因为该令牌将存储在项目存储库中并与您的团队共享。

  • 可惜了,我真的很舍不得用token。但无论如何还是谢谢你。 (3认同)
  • 我发现它也可以与仅具有“read_api”权限的项目访问令牌一起使用,而不是个人访问令牌。这比使用个人访问令牌安全得多,在某些情况下甚至可以直接提交到composer.json。 (2认同)

Dev*_*ull 7

ssh 和 git 现在可以在 Composer 中使用

你的 gitlab 克隆看起来像这样:

git@gitlab.com:/.git

在您的composer.json 中执行此操作:

{
    ...
    "repositories": [
        ...
        {
            "type": "git",
            "url":  "git@gitlab.com:<VENDOR>/<PROJECT>.git"
        }
    ]
}

Run Code Online (Sandbox Code Playgroud)

然后添加资源:

composer require <VENDOR>/<PROJECT>
composer update
Run Code Online (Sandbox Code Playgroud)

  • 应选择此作为正确答案。只需在项目的composer.json 中将存储库类型“vcs”替换为“git”即可使问题完全消失。 (3认同)
  • 为什么你使用 git type 而不是 vcs (2认同)