Azure Devops:即使设置 NPM 身份验证后也无法使用 NPM 私有注册表构建映像

2023-11-23

设置 NPM Authenticate 后,我总是在 npm install 上收到错误。我想在映像构建期间对我的 npm 私有注册表进行身份验证并安装我需要的所有依赖项。也许我误解了这个身份验证过程的工作原理,但这就是我正在做的:

建设管道

我尝试从项目设置页面建立服务连接,如下所示构建和发布的服务连接

之后,我还按照以下步骤设置了 NPM 身份验证任务使用任务运行程序(例如让 gulp 工作)

但这是行不通的。这些是我收到的错误:

在“NPM 身份验证”阶段:

[警告]发现并覆盖了 所选 .npmrc 文件中的 myregistry.pkgs.visualstudio.com 注册表。 从文件中删除凭据并将其存储在 npm 服务中 连接(推荐),或删除 npm Authenticate 任务 从您的构建中使用签入 .npmrc 的凭据。

在“构建图像”阶段:

步骤 4/7:运行 npm install --product ---> 在 8724f713f1db 中运行 [91 点错误!代码[0m[91m E404 [0m[91mnpm [0m[91mERR! 404[0m[91m 不 找到:@myregistry/service-logging@latest npm ERR![0m[91m 完整的 这次运行的日志可以在:npm ERR!
/root/.npm/_logs/2018-09-11T04_20_00_513Z-debug.log [0m命令 '/bin/sh -c npm install --product' 返回非零代码:1 [错误]命令'/bin/sh -c npm install --product'返回非零代码:1 [错误]/usr/local/bin/docker 失败并返回 代码:1 [节]整理:构建图像

这是我的 .npmrc 文件:

unsafe-perm=true
package-lock=false
registry=https://myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/
always-auth=true
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:_authToken=${NPM_TOKEN}
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/:_authToken=${NPM_TOKEN}

这是我的 Dockerfile:

FROM node:8.9-alpine

ARG NPM_TOKEN

WORKDIR /usr/src/srv/

COPY package.json package.json

COPY .npmrc .npmrc

RUN npm install --production

RUN rm -f .npmrc

COPY . .

EXPOSE 8080

CMD npm start

任何帮助我摆脱这个问题的帮助将不胜感激!谢谢!


我最终通过删除 .npmrc 文件中的最后两行解决了管道中的这个问题。最后一行引起了问题。在 NPM 身份验证任务之后,我的 .npmrc 文件被修改为:

unsafe-perm=true
package-lock=false
registry=https://myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/
always-auth=true

//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/:_authToken=${NPM_TOKEN}

//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:username=VssToken
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:_password=***
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:email=VssEmail
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:always-auth=true

不知何故,考虑了以下配置,并且 NPM Authenticate 插入的配置被忽略,导致管道错误:

//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/:_authToken=${NPM_TOKEN}

此外,无需包含以下行,因为 NPM Authenticate 将为您完成这项工作:

//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:_authToken=${NPM_TOKEN}

通过删除上面的行,此警告消失了:

[警告]发现并覆盖了 所选 .npmrc 文件中的 myregistry.pkgs.visualstudio.com 注册表。 从文件中删除凭据并将其存储在 npm 服务中 连接(推荐),或删除 npm Authenticate 任务 从您的构建中使用签入 .npmrc 的凭据。

因此,总而言之,只需让 .npmrc 文件保持简单即可:

unsafe-perm=true
package-lock=false
registry=https://myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/
always-auth=true

Dockerfile 一切都很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure Devops:即使设置 NPM 身份验证后也无法使用 NPM 私有注册表构建映像 的相关文章

随机推荐