我有一个非常奇怪的问题,我似乎无法理解......
我们在 Azure Artifacts 中使用私有注册表来分发私有 npm 包。我的 Azure Pipeline 正在使用 npmAuthenticate 任务来针对此源进行身份验证。 feed 信息放置在项目的 .npmrc 文件中。 提要权限显示该项目作为贡献者角色:
User/Group: [ProjectName]\Contributor - Role: Contributor
随机构建在
npm ci
步骤失败,并显示以下错误消息:
#17 132.8 npm ERR! code E401
#17 132.8 npm ERR! Incorrect or missing password.
通过诊断输出,我看到不同包的错误。然而,在管道运行中,出现 401 错误的包有所不同。此外,并非所有软件包都会受到影响。大多数都可以正常加载。
#17 55.03 npm http fetch GET 401 https://***/***/_packaging/***/npm/registry/resolve-from/-/resolve-from-4.0.0.tgz 50860ms attempt #2 (cache skip)
我们最近改变了什么
我已经尝试过的
18.18
一起工作,但不在上面。管道和 Docker 文件摘录
管道:
[...]
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
displayName: 'NPM Auth'
- bash: |
docker build -f ./deployment/ci.Dockerfile -t $(projectName):$(Build.SourceVersion) .
displayName: 'CI build docker image'
[...]
ci.Dockerfile:
FROM node:20.12 AS builder
RUN apt-get update && \
apt-get install -y chromium && \
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip -O ~/sonar.zip && \
unzip ~/sonar.zip -d /opt/sonar && \
rm ~/sonar.zip
ENV CHROME_BIN=/usr/bin/chromium PATH="/opt/sonar/sonar-scanner-5.0.1.3006-linux/bin:${PATH}"
WORKDIR /build
COPY package.json /build
COPY package-lock.json /build
COPY .npmrc /build
COPY sonar.properties /build
RUN npm -d ci # <-- It fails here. Usually run without -d.
COPY . /build
RUN npm run build:ci
[...]
我尝试了你的任务,并且使用相同的 Dockerfile,它始终在我这边工作。当使用相同的源代码和相同的代理时,您的管道会间歇性失败。我的管道和你的管道的区别是两个包json内容和代理,请: