Auto: Auth не подбирается правильно в GitHub Action с использованием Artifactory и автономных бегунов

Созданный на 19 мар. 2021  ·  14Комментарии  ·  Источник: intuit/auto

Опишите ошибку

Я пытаюсь проверить канареечную версию, которая работает на автономном средстве запуска, которое извлекает зависимости из частного реестра Artifactory npm, а затем впоследствии публикует пакет обратно в него, все через действие GitHub, которое находится на автономном средстве запуска. Кажется, все работает правильно, кроме самого шага публикации, и я вижу следующее:

Screen Shot 2021-03-19 at 10 11 08 AM

Впоследствии дальше вниз:

Screen Shot 2021-03-19 at 10 11 53 AM

У меня не обязательно есть доступ к среде бегуна, поскольку она управляется нашей командой операторов, но я подтвердил следующее:

  • Действие выполняется в /home/ubuntu/actions-runner/_work/fe-ui/fe-ui
  • Кажется, что файл .npmrc обновлен правильно с вводом токена

    • //artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/:_authToken=${NPM_TOKEN}

  • Файл .npmrc , который обновляется указанным выше токеном, находится внутри /home/ubuntu/.npmrc

Воспроизводить



Ожидаемое поведение

Скриншоты

Информация об окружающей среде:


Дополнительный контекст

Я хотел бы предоставить любую дополнительную информацию, но мне больше нечего делать. Что я могу сделать, чтобы добавить дополнительные сведения, которые могут помочь решить эту проблему?

Все 14 Комментарий

Похоже, вы используете legacyAuth. Я бы попробовал сначала выключить это

@hipstersmoothie, когда вы говорите об использовании устаревшей аутентификации, вы имеете в виду _auth = [token] в файле .npmrc ? Если да, то это не так, если нет, что именно вы имеете в виду и как мне это отключить?

Вам, вероятно, следует поработать, чтобы решить эту проблему со своим парнем DevOps.

Несколько советов, основанных на использовании наших артефактов:

  • Мы храним действительный артефактор .npmrc в переменной env, которая вводится во время наших сборок.

Screen Shot 2021-03-19 at 11 32 06 AM

  • Поскольку мы сами устанавливаем npmrc, вам также необходимо установить npm плагина setRcToken на false

Я заметил, что команда canary в вашем выводе использует флаг _auth , который используется только в том случае, если для legacyAuth установлено значение true в вашем .autorc

Итак, шаги, которые вы можете предпринять на месте:

  1. получить npmrc, работающий локально, который публикуется в артефакте
  2. скопируйте его в env var
  3. ввести эту переменную env во время сборки в ~/.npmrc
  4. Убедитесь, что вы установили setRcToken на false

@hipstersmoothie ах, вы правы, мы установили для legacyAuth значение true, потому что без него (и теперь, когда я пробую ваши предложения) мы получаем 403 Forbidden из нашего экземпляра artifactory. Я просто попытался настроить реестр с набором токенов (как в моем исходном сообщении, но с фактическим токеном) в файле .npmrc и все еще вижу 403. Я понимаю, что это, вероятно, ограничение нашей настройки ops, но просто из любопытства, что в твоем npmrc? Наша следующая:

registry = https://artifactory.internal.livongo.com/artifactory/api/npm/npm-virtual
email = [email protected]
always-auth = true
save-exact = true

а затем в package.json:

"publishConfig": {
  "registry": "https://artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/"
},

Вы заметите, что конец URL-адреса отличается для публикаций и установок npm, что, как я понимаю, было необходимо через Artifactory для уровня кеширования, но я определенно не эксперт по самой Artifactory. Я просто помню, что это был единственный способ заставить аутентификацию работать правильно (используя legacyAuth), когда мы публиковали с наших локальных машин в Artifactory. Теперь мы пытаемся заблокировать локальную публикацию и выгрузить это в GitHub Actions, но, как назло, я хотел опубликовать канарейку этого изменения, прежде чем я удалил legacyAuth из нашей общей автоконфигурации и распространил его на все наши пакеты, но увы, я не могу, потому что теперь я не могу публиковать из-за отсутствия legacyAuth, лол.

Мы настроили это один раз очень давно, но я постараюсь сообщить, какие шаги мы предпринимаем:

Вот наша внутренняя документация по настройке npmrc

Screen Shot 2021-03-19 at 12 01 36 PM

Кроме этого, я, вероятно, не сильно помогу. Artifactory может быть непросто заставить себя вести себя

@hipstersmoothie Я ценю вашу помощь. Вы очень правы с точки зрения того, как заставить Artifactory вести себя, и это особенно сложно, если вы не можете получить доступ для управления экземпляром и должны постоянно ходить туда-сюда с DevOps, чтобы попробовать что-то.

Тем не менее, я ценю вашу помощь и буду продолжать работать над этим. Я уже пытался имитировать настройку, аналогичную той, что вы показали на этом снимке экрана (а затем попробовал ее еще раз, чтобы проверить, после того, как вы ее разместили), и это не сработало для моего варианта использования, вероятно, из-за настройки в Artifactory, которая отличается для нас. Если вы не возражаете, я хотел бы оставить эту проблему открытой и вернуться и закрыть ее, если / когда мы ее решим. Я, вероятно, в конечном итоге перейду к внутреннему устройству auto как часть этого процесса.

Да, меня это устраивает. Если вы придумали какой-нибудь хороший шаг по настройке артефакта, мы тоже можем добавить его в документацию.

@hipstersmoothie Я смотрю на эту строку:

https://github.com/intuit/auto/blob/v10.21.3/plugins/npm/src/set-npm-token.ts#L37

Для моей локальной машины (доступной для внутреннего артефакта), когда isCi равно false , я могу опубликовать. Если я изменю свою локальную строку node_modules/@auto-it/npm/dist/set-npm-token.js указанную выше, на if (false) { , тогда я получу ту же ошибку 403, что и, когда isCi равно true .

Либо это правильно для не-ci, либо правильно для ci. Я подозреваю, что setTokenOnCI не рассматривает legacyAuth и это должно быть?

Похоже, вы могли пропустить, где я это сказал

Убедитесь, что вы установили для setRcToken значение false

Весь этот код пропускается, если для setRcToken установлено значение false

@hipstersmoothie, какой замечательный ответ, и все будет хорошо, как только мы установим setRcToken на false . Использование auto через действия github в нашем артефакте - это GO. Спасибо!

Проблема может быть закрыта, ошибка пользователя / настройки, спасибо за поддержку.

@hipstersmoothie Спасибо за терпение, пока мы это выясняли.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги