Cli: [BUG] Поведение npx в средах CI

Созданный на 9 окт. 2020  ·  14Комментарии  ·  Источник: npm/cli

На самом деле это не ошибка, но мы поднимаем его, чтобы обсудить потенциальное влияние изменений npx в средах CI.

Текущее поведение:

npx mocha
Need to install the following packages:
 mocha
Ok to proceed? (y)

npx -y mocha работает, чтобы получить автоматическую установку, но это потребует от пользователей обновления своих сценариев CI.

Кроме того, ошибки npx -y mocha в npm @ 6 с:

npx -y mocha
ERROR: You must supply a command.
Execute binaries from npm packages.
  npx [options] <command>[@version] [command-arg]...

Я думаю, что это усложнит логику, требуемую в сценариях CI при работе с несколькими версиями Node.js / npm.

_Просто использую Mocha в качестве примера. В Node.js мы используем npx в нашей конфигурации GH Actions , которая, как я подозреваю, будет нарушена, когда GH Actions обновится для использования версии Node.js, содержащей

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

  • Не уверен, но любопытно, есть ли обходной путь, который избавляет пользователей от необходимости редактировать свои сценарии.

Действия по воспроизведению:

  • npx <module> в среде CI.

Окружающая обстановка:

  • Все среды CI

/ cc @MylesBorins @richardlau

Bug Release 7.x

Самый полезный комментарий

мы опубликовали сегодня версию 7.0.6, которая, надеюсь, решит эту проблему. Теперь мы полностью пропускаем приглашение, если вы работаете в среде CI.

дайте нам знать, если у вас останутся проблемы!

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

@ruyadorno упомянул в сослаться на контекст этого решения?

привет @BethGriggs, спасибо, что сообщили нам 😄

Стоит упомянуть, что для неинтерактивных терминалов мы собираемся пропатчить (ref # 1936) npx только на WARN, вместо того, чтобы бросать, поэтому любая комбинация конвейеров Unix также избегает запроса / подтверждения:

  • npx mocha < /dev/null

как также упоминалось в канале Slack: npm_config_yes=true npx mocha - это его рабочая версия, совместимая с npm6-7

сегодня мы опубликовали 7.0.0-rc.4, который пропускает приглашение, но выводит предупреждение при запуске в неинтерактивной среде. таким образом вы все равно будете предупреждены о том, что что-то устанавливается, но мы не ломаемся в средах CI.

для интерактивных сред вышеупомянутый обходной путь должен помочь.

Вы можете сообщить нам, решит ли это вашу проблему @BethGriggs?

сегодня мы опубликовали 7.0.0-rc.4, который пропускает приглашение, но выводит предупреждение при запуске в неинтерактивной среде. таким образом вы все равно будете предупреждены о том, что что-то устанавливается, но мы не ломаемся в средах CI.

для интерактивных сред вышеупомянутый обходной путь должен помочь.

Вы можете сообщить нам, решит ли это вашу проблему @BethGriggs?

root<strong i="9">@localhost</strong> ~# npm install -g [email protected]
npm ERR! code MODULE_NOT_FOUND
npm ERR! Cannot find module 'agentkeepalive'
npm ERR! Require stack:
npm ERR! - /usr/local/lib/node_modules/npm/node_modules/make-fetch-happen/agent.js
npm ERR! - /usr/local/lib/node_modules/npm/node_modules/make-fetch-happen/index.js
npm ERR! - /usr/local/lib/node_modules/npm/node_modules/npm-registry-fetch/index.js
npm ERR! - /usr/local/lib/node_modules/npm/lib/utils/metrics.js
npm ERR! - /usr/local/lib/node_modules/npm/lib/npm.js
npm ERR! - /usr/local/lib/node_modules/npm/lib/cli.js
npm ERR! - /usr/local/lib/node_modules/npm/bin/npm-cli.js

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-10-10T03_17_28_890Z-debug.log

Вы можете сообщить нам, решит ли это вашу проблему @BethGriggs?

Я думаю, что проблема была решена, чтобы уменьшить влияние в средах CI, спасибо!

закрытие, так как исходная проблема решена.

@gengjiawen, если вы можете воспроизвести проблему, с которой вы столкнулись при обновлении, пожалуйста, откройте другую проблему, и мы можем обсудить ее там

FWIW, я наткнулся на это в TravisCI: https://travis-ci.com/github/kentcdodds/advanced-react-hooks/builds/191260988

image

Я думаю , что оригинальная обеспокоенность тем , что @BethGriggs "по - прежнему является проблема 😬

хммм 🤔 может быть, нам также следует проверить среду, используя @npmcli/ci-detect поверх проверки process.stdin.isTTY @nlf ?

Попадание и это тоже сломало все наши сценарии CI ... Почему вы внесли критическое изменение в второстепенный выпуск / выпуск исправления?

Для всех, у кого есть эта проблема в Circle CI, вы можете установить глобальную переменную среды, чтобы установить для переменной npm_config_yes значение true для всех ваших заданий.

@FezVrasta изменение произошло в 7.0.0 Semver-Major. Мы думали, что исправили проблему CI, проверив TTY, но, похоже, есть крайние случаи, которые мы пропустили. Похоже, что # 2047 открыт, чтобы, надеюсь, исправить это для других сред CI

мы опубликовали сегодня версию 7.0.6, которая, надеюсь, решит эту проблему. Теперь мы полностью пропускаем приглашение, если вы работаете в среде CI.

дайте нам знать, если у вас останутся проблемы!

Сейчас у нас работает: https://github.com/testing-library/react-testing-library/pull/809/files

Спасибо за быстрое исправление!

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

  1. где хранится посылка? По-видимому, он не установлен как глобальный пакет npm.
  2. как заставить npx make проверять и скачивать последнюю версию "make"? У нас возникла проблема, связанная с тем, что npx make застревает в локальной установленной старой версии make.
Была ли эта страница полезной?
0 / 5 - 0 рейтинги