jenkins 构建上私有仓库的 NPM 身份验证错误

Dav*_*ave 6 git node.js npm jenkins

我正在开发一个前端应用程序,该应用程序依赖于我们组织开发的依赖项,但托管在单独的存储库中。这是一个由我们托管的 bitbucket 存储库,并且是私有的。

我们使用 NPM 来管理这个依赖,并通过安装它 git+https://<the-dependency-repo>.com

这适用于我们的本地环境,因为我们的凭据已缓存。请注意:我们无法切换到 SSH。我知道 ssh 解决方案,我无法控制帐户管理、bitbucket 访问等...

当 Jenkins CI 运行时,它会使用存储在凭据插件中的凭据从其存储库中提取我们的应用程序,然后运行npm install.

问题:

安装失败,因为在npm install.

到目前为止我尝试过的:

由于 git 凭据存储在 Jenkins 凭据插件中,因此我可以访问 git 用户名/密码组合。

当 npm 尝试运行时会发生精确的失败 git ls-remote ...

为了避免这种身份验证失败,我可以在 npm 安装之前运行一个 shell 命令:

git config credential.helper 'cache'
git fetch https://${USERPASSCOMBO}@<repo>
Run Code Online (Sandbox Code Playgroud)

好消息是这有效!NPM 能够git fetch ls-remote无错误地运行

坏消息是下一个命令git clone -q <repo>失败。

我尝试了相同的解决方案:在 npm install 之前添加以下内容:

 git config credential.helper 'cache'
 git ls-remote https://${USERPASSCOMBO}@<repo>
 git clone https://${USERPASSCOMBO}@<repo>
Run Code Online (Sandbox Code Playgroud)

注意:这些命令在 npm install 之前按预期工作

但是,NPM 安装仍然失败,产生以下错误输出:

[ERROR] npm ERR! Command failed: /bin/git clone -q https://<repo> /var/lib/jenkins/.npm/_cacache/tmp/git-clone-ed5ac1a9
[ERROR] npm ERR! warning: templates not found /tmp/pacote-git-template-tmp/git-clone-49feabe4
[ERROR] npm ERR! fatal: Authentication failed for '<repo>'
[ERROR] npm ERR! 
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助,甚至是指向正确方向的指针。我已经竭尽全力尝试我能想到的一切。

小智 -2

尝试使用 URL 从存储库安装git+https://user:password@<repo-url>。请注意,这会使您的密码处于公开状态,因此我建议您生成一个应用程序令牌或类似的令牌(如果您的存储库提供商支持此操作)。