使用Composer从自建GitLab实例创建项目时认证失败求助
我之前也踩过自托管GitLab和Composer认证的坑,给你几个实用的排查和解决步骤:
检查GitLab Composer仓库配置与路径有效性
首先手动访问命令里报错的https://my.self-hosted-gitlab-instance.com/myrepository.git/packages.json,用浏览器输入你的账号凭据试试能不能打开。如果打不开,说明这个路径本身有问题:要么是你的GitLab项目没正确启用Packages功能,要么是仓库地址格式错误——自托管GitLab的Composer仓库端点应该是类似https://<你的GitLab地址>/api/v4/projects/<项目ID>/packages/composer,你可以去项目的「Packages & Registries」页面找到正确的地址。改用GitLab个人访问令牌(PAT)认证
如果你的GitLab账号开启了2FA,直接输入密码肯定会认证失败;就算没开2FA,GitLab也更推荐用PAT进行自动化工具认证。去GitLab的「个人设置」→「访问令牌」,创建一个拥有read_api和read_repository权限的令牌,然后在Composer提示输入密码时,输入这个PAT而非你的账号密码。预先在Composer配置中设置凭据
避免每次输入出错,你可以把凭据写入全局Composer配置:composer config --global gitlab-token.my.self-hosted-gitlab-instance.com <你的PAT令牌>或者手动编辑
~/.composer/config.json文件,添加如下内容:{ "config": { "gitlab-token": { "my.self-hosted-gitlab-instance.com": "你的个人访问令牌" } } }清除Composer缓存
缓存的旧凭据或无效数据可能导致认证异常,执行以下命令清除缓存后再重试:composer clear-cache修正
create-project命令的仓库地址
你当前用的--repository=https://my.self-hosted-gitlab-instance.com/repository.git指向的是Git仓库地址,而非Composer仓库端点。替换成正确的Composer仓库地址后,命令应该类似:composer create-project vendor/name --repository=https://my.self-hosted-gitlab-instance.com/api/v4/projects/<项目ID>/packages/composer
内容的提问来源于stack exchange,提问作者StatiX

