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

我尝试从项目设置页面建立服务连接,如构建和发布的服务连接
之后,我还按照使用任务运行程序中的步骤设置了我的 NPM 身份验证任务(例如使 gulp 工作)
但这是行不通的。这些是我得到的错误:
在“NPM 身份验证”阶段:
[警告] 在选定的 .npmrc 文件中找到并覆盖 myregistry.pkgs.visualstudio.com 注册表的凭据。从文件中删除凭据并将它们存储在 npm 服务连接中(推荐),或者从构建中删除 npm Authenticate 任务以使用签入 .npmrc 的凭据。
在“构建映像”阶段:
步骤 4/7:运行 npm install --production ---> 在 8724f713f1db 中运行 [91mnpm ERR!代码[0m[91m E404 [0m[91mnpm [0m[91mERR! 404[0m[91m Not Found: @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 --production'返回非零代码:1 [错误]命令'/bin/ sh -c npm install --production' 返回非零代码:1 [error]/usr/local/bin/docker failed with return code: 1 [section]Finishing: Build an image
这是我的 .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}
Run Code Online (Sandbox Code Playgroud)
这是我的 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
Run Code Online (Sandbox Code Playgroud)
任何帮助我解决这个问题的帮助将不胜感激!谢谢!
我最终通过删除 .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
Run Code Online (Sandbox Code Playgroud)
不知何故,考虑了以下配置,并且忽略了 NPM Authenticate 插入的配置,从而导致管道错误:
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)
此外,无需包含以下行,因为 NPM Authenticate 将为您完成这项工作:
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)
通过删除上面的行,此警告消失了:
[警告]在选定的 .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
Run Code Online (Sandbox Code Playgroud)
Dockerfile 一切都很好。
| 归档时间: |
|
| 查看次数: |
4637 次 |
| 最近记录: |