Опишите ошибку
Я пытаюсь проверить канареечную версию, которая работает на автономном средстве запуска, которое извлекает зависимости из частного реестра Artifactory npm, а затем впоследствии публикует пакет обратно в него, все через действие GitHub, которое находится на автономном средстве запуска. Кажется, все работает правильно, кроме самого шага публикации, и я вижу следующее:
Впоследствии дальше вниз:
У меня не обязательно есть доступ к среде бегуна, поскольку она управляется нашей командой операторов, но я подтвердил следующее:
/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
Воспроизводить
Ожидаемое поведение
Скриншоты
Информация об окружающей среде:
Дополнительный контекст
Я хотел бы предоставить любую дополнительную информацию, но мне больше нечего делать. Что я могу сделать, чтобы добавить дополнительные сведения, которые могут помочь решить эту проблему?
Похоже, вы используете legacyAuth. Я бы попробовал сначала выключить это
@hipstersmoothie, когда вы говорите об использовании устаревшей аутентификации, вы имеете в виду _auth = [token]
в файле .npmrc
? Если да, то это не так, если нет, что именно вы имеете в виду и как мне это отключить?
Вам, вероятно, следует поработать, чтобы решить эту проблему со своим парнем DevOps.
Несколько советов, основанных на использовании наших артефактов:
npm
плагина setRcToken
на false
Я заметил, что команда canary в вашем выводе использует флаг _auth
, который используется только в том случае, если для legacyAuth
установлено значение true в вашем .autorc
Итак, шаги, которые вы можете предпринять на месте:
~/.npmrc
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
Кроме этого, я, вероятно, не сильно помогу. 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 Спасибо за терпение, пока мы это выясняли.