Перестали работать сборки Azure DevOps для Docker с установкой npm из частного канала - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть несколько сборок 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 вокруг аутентификации с помощью его личных каналов? Не то чтобы я это знал, но, как я уже сказал, эти сборки просто перестали работать в октябре, и я ничего не изменил. Советы приветствуются.

...