Cli: [バグ] CI環境でのnpxの動作

作成日 2020年10月09日  ·  14コメント  ·  ソース: npm/cli

これは実際にはバグではありませんが、CI環境でのnpxへの変更の潜在的な影響について議論するためにバグを提起します。

現在の動作:

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

npx -y mochaは自動インストール動作を取得するために機能しますが、そのためにはユーザーがCIスクリプトを更新する必要があります。

また、 npm @ 6でのnpx -y mochaエラー:

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

複数のNode.js / npmバージョンで実行する場合、CIスクリプトに必要なロジックが複雑になると思います。

_例としてMochaを使用します。 Node.jsでは、 GH Actions構成ます。これは、 GHActions

予想される行動:

  • 不明ですが、ユーザーがスクリプトを編集する必要をなくす回避策があるかどうかは気になります。

再現する手順:

  • CI環境でのnpx <module>

環境:

  • すべてのCI環境

/ cc @MylesBorins @richardlau

Bug Release 7.x

最も参考になるコメント

本日7.0.6を公開しましたが、これでうまくいくはずです。 CI環境で実行しているように見える場合は、プロンプトを完全にスキップするようになりました。

引き続き問題が発生する場合はお知らせください。

全てのコメント14件

@ruyadornoはスラックの会話で、これは意図的な

こんにちは@BethGriggs私たちに知らせてくれてありがとう😄

非対話型端末の場合、 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の当初の懸念はまだ問題だと思います😬

うーん🤔 process.stdin.isTTY @nlfのチェックに加えて、 @npmcli/ci-detectを使用して環境もチェックする必要がありますか?

これもヒットすると、すべてのCIスクリプトが壊れました...マイナー/パッチリリースで壊れた変更を導入したのはなぜですか?

Circle CIでこの問題が発生している場合は、グローバル環境変数を設定して、すべてのジョブに対してnpm_config_yes変数をtrueに設定できます。

@FezVrastaの変更は、7.0.0Semver-Majorの変更で行われました。 TTYをチェックしてCIの問題を修正したと思いましたが、見逃したエッジケースがあるようです。 #2047は、より多くのCI環境でこれを修正できる可能性があります。

本日7.0.6を公開しましたが、これでうまくいくはずです。 CI環境で実行しているように見える場合は、プロンプトを完全にスキップするようになりました。

引き続き問題が発生する場合はお知らせください。

今私たちのために働く: https

迅速な修正をありがとう!

質問:npx7がプロンプトを表示してから、ユーザーが不足しているパッケージをインストールすると、

  1. パッケージはどこに保管されていますか? どうやらそれはグローバルnpmパッケージとしてインストールされていません。
  2. npx makeに最新バージョンの「makes」をチェックしてダウンロードさせる方法は? npxmakesがローカルにインストールされた古いバージョンの「makes」でトラップされるという問題が発生しました。
このページは役に立ちましたか?
0 / 5 - 0 評価