У меня есть несколько сборок Docker для приложений Azure DevOps для React, которые включают пакеты из частного канала npm, также размещенные в Azure DevOps. Недавно сборки перестали работать по команде npm install
.
Для проверки подлинности контейнера для установки из частного канала я всегда использовал файл .npmrc
. Это локально сохраняется как .npmrc.docker
и выглядит следующим образом:
@<package-scope>:registry=https://<devops-username>.pkgs.visualstudio.com/_packaging/<feed-name>/npm/registry/
//<devops-username>.pkgs.visualstudio.com/_packaging/<feed-name>/npm/registry/:username=<feed-name>
//<devops-username>.pkgs.visualstudio.com/_packaging/<feed-name>/npm/registry/:_password=${NPM_TOKEN}
//<devops-username>.pkgs.visualstudio.com/_packaging/<feed-name>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<devops-username>.pkgs.visualstudio.com/_packaging/<feed-name>/npm/:username=<feed-name>
//<devops-username>.pkgs.visualstudio.com/_packaging/<feed-name>/npm/:_password=${NPM_TOKEN}
//<devops-username>.pkgs.visualstudio.com/_packaging/<feed-name>/npm/:email=npm requires email to be set but doesn't use the value
Я определяю источник пакета с областью действия сверху, а остальное генерируется из DevOps Azure через его Подключение к каналу мастер. ${NPM_TOKEN}
- это мой пароль фида, который я передаю в команду docker build
в качестве аргумента сборки.
Часть моего Dockerfile, которая использует это, выглядит следующим образом:
FROM node:alpine as build
ARG NPM_TOKEN
COPY ./.npmrc.docker /app/.npmrc
COPY ./package.json /app/package.json
WORKDIR /app
RUN npm install
RUN rm -f .npmrc
В моемAzure DevOps создает конвейер, это всегда работало. Изображение сборки часть конвейера передает в этом аргументе сборки переменную, подобную этой - --build-arg NPM_TOKEN=$(ArtifactsNpmPat)
- где ArtifactsNpmPat
- это переменная в моей библиотеке.
Недавно мои сборки началисьтерпит неудачу. Первоначально я предполагал, что мой токен истек, поэтому я сгенерировал и сохранил новый. Вот ошибка агента:
[ошибка] Команда '/ bin / sh -c npm install' вернула ненулевой код: 1
[ошибка] ПроцессОшибка «/ usr / bin / docker» с кодом завершения 1
Обратите внимание, что тот же процесс продолжает работать локально. Так что я не знаю, как это диагностировать. Я нашел этот пост , который заставил меня обновить Dockerfile, чтобы он выглядел следующим образом:
FROM node:alpine as build
ARG NPM_TOKEN
COPY ./.npmrc.docker /app/.npmrc
COPY ./package.json /app/package.json
WORKDIR /app
RUN npm install -g vsts-npm-auth
RUN vsts-npm-auth -config .npmrc
RUN npm install
RUN rm -f .npmrc
Однако docker build
теперь генерирует довольно сумасшедшую ошибку из RUN vsts-npm-auth
команда.
/usr/local/bin/vsts-npm-auth: line 1: MZ�╚╝���@���: not found
/usr/local/bin/vsts-npm-auth: line 1: �ԞO���: not found
/usr/local/bin/vsts-npm-auth: line 57: ╔╚��║[�
╔0�
&� �@ ╗╝═�╗��╔╚.rsrc�@@.reloc
�╗�@�H╗║�?�Y
╗*═d��╚���╗(&
╗╚s'
}║╝╗╗╚═}═╝*╗{═╝*0╗4╔╗╚( ═╔╗╚(
═╔╚╚(
═╔╗╚(
═╔╗╚(
+═*0╔╗╚/(═
+═*0╝M╗╗{║╝o(
═()
�╔
,+╚═o*
�╔ ,s+
z═o,
Xo-
╝+║╚╝+╝*0╔╗╚?(═
+═*0╔╗╚#(═
+═*0A╚╚r╔po.
-╗{║╝o/
r╔p(0
+╔
═,║╚
+╗╚/(═
+*0╝�╝╗╚╝║(═
═�╔ ,&═╝╝,r║p╝�S╔╚(1
s2
z╚║+Z╚═o3
╚╚o,
═X(4
o5
╝-╚+║rgp║-╗(6
%-═&rgp+║rgp╝-rgp+(7
║+║*0╗║║- ╚╝o8
+╚╝o9
+═*0╚L╗(&
╗╚}
╝╗║}╝╗═}╝╗╗(═}╝*╝═
╗{╝o:
╗(╗{
╝s;
╗(═o
╝+#╝o
║╗ ║(═══�╚,╗
╝o
╝╝o
0�s<╔╗30c
╗{╝ripo=
�╚,E(>
r�p�╔%rip�%�(?
�S╔%;�o@
═ sA
oB
═╚╗{╝sC
oB
═sD
╝+╝*0║╗{╝-rp╔p+║r�╔p
╝═╗{╝oE
+*0╗# ╗{
╝%-
&╗{╝(═: not found
/usr/local/bin/vsts-npm-auth: line 58: syntax error: unexpected word (expecting ")")
Так что я застрял. Что-то изменилось в DevOps вокруг аутентификации с помощью его личных каналов? Не то чтобы я это знал, но, как я уже сказал, эти сборки просто перестали работать в октябре, и я ничего не изменил. Советы приветствуются.