0

我们在我们的 Jenkins CI 管道中将 JFrog Artifactory 用于 NPM 包。我想从 Artifactory 下载 npm 包,同时在我们的 CI 中构建 docker 映像,npm ci/npm install以减少 docker 构建过程的持续时间。

我尝试如下通过将.npmrc包含我们的私有注册表信息的文件从本地复制到 docker 容器,当我检查 npm install 的日志时,它能够从我们的 JFrog Artifactory 下载依赖项。但这不是一种安全的方法,因为我这样做了不想将 .npmrc 保留在本地存储库中并提交到 VCS。

这样做的最佳方法可能是什么?

Dockerfile

FROM node:12.21.0-alpine3.12 AS builder
WORKDIR /usr/src/app
ARG NPM_TOKEN  
ARG NODE_ENVIRONMENT=development
ENV NODE_ENV=$NODE_ENVIRONMENT
COPY package.json /usr/src/app/package.json
COPY package-lock.json* .
COPY .npmrc /usr/src/app/.npmrc
RUN npm ci --loglevel verbose
RUN rm -f .npmrc


FROM node:12.21.0-alpine3.12
WORKDIR /usr/src/app
RUN apk update && apk add curl
COPY --from=builder /usr/src/app /usr/src/app
COPY . .
EXPOSE 50005 9183
CMD [ "npm", "run", "start:docker" ]

.npmrc

registry=https://artifacts.[company].com/artifactory/api/npm/team-npm-development-virtual
_auth = xxxxxxxxxx
always-auth = true
email = firstname.lastname@company.com
4

1 回答 1

0

只要不包含“_auth”条目,您就可以将 .npmrc 存储在 VCS 上。

在 azure devops 上,我们使用服务连接。AFAIK,在“构建容器”上是不可能的。

所以我的方法是使用受保护的构建变量来存储凭证,并在构建时注入它。在 npm install 之前,您可以在 .npmrc 上设置“_auth”值。您可以通过许多不同的方式实现这一点,但仅此而已。

于 2021-04-01T18:21:19.563 回答