Cli: [BUG] Comportamento npx em ambientes de CI

Criado em 9 out. 2020  ·  14Comentários  ·  Fonte: npm/cli

Este não é realmente um bug, mas levantá-lo para discutir o impacto potencial das mudanças em npx em ambientes de CI.

Comportamento atual:

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

npx -y mocha funciona para obter o comportamento de instalação automática, mas isso exigiria que os usuários atualizassem seus scripts de CI.

Além disso, npx -y mocha erros em npm @ 6 com:

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

Acho que isso complicaria a lógica necessária em scripts de CI ao executar em várias versões Node.js / npm.

_Só usando o Mocha como exemplo. No Node.js, usamos npx em nossa configuração de ações do GH , que eu suspeito que seria interrompida quando as ações do GH fossem atualizadas para usar uma versão do Node.js contendo npm@7._

Comportamento esperado:

  • Não tenho certeza, mas estou curioso para saber se poderia haver uma solução alternativa que elimine a necessidade de os usuários editarem seus scripts.

Passos para reproduzir:

  • npx <module> em um ambiente de CI.

Meio Ambiente:

  • Todos os ambientes de CI

/ cc @MylesBorins @richardlau

Bug Release 7.x

Comentários muito úteis

publicamos o 7.0.6 hoje que deve resolver isso. agora, ignoramos totalmente o prompt se você parece estar executando em um ambiente de CI.

deixe-nos saber se você continuar a ter problemas!

Todos 14 comentários

@ruyadorno mencionou na conversa lenta que esta foi uma alteração significativa intencional, alguém poderia vincular ao contexto dessa decisão?

oi @BethGriggs obrigado por nos avisar 😄

Vale a pena mencionar que, para terminais não interativos, vamos corrigir (ref # 1936) npx apenas para WARN em vez de lançar, portanto, qualquer combinação de pipelines Unix também evitaria o prompt / confirmação:

  • npx mocha < /dev/null

como também mencionado no canal slack: npm_config_yes=true npx mocha é a versão compatível npm6-7 funcional dele

publicamos 7.0.0-rc.4 hoje que ignora o prompt, mas imprime um aviso, quando executado em um ambiente não interativo. dessa forma, você ainda é alertado de que algo está sendo instalado, mas não quebramos em ambientes de CI.

para ambientes interativos, a solução alternativa acima deve resolver o problema.

você pode nos informar se isso resolve seu problema @BethGriggs?

publicamos 7.0.0-rc.4 hoje que ignora o prompt, mas imprime um aviso, quando executado em um ambiente não interativo. dessa forma, você ainda é alertado de que algo está sendo instalado, mas não quebramos em ambientes de CI.

para ambientes interativos, a solução alternativa acima deve resolver o problema.

você pode nos informar se isso resolve seu problema @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

você pode nos informar se isso resolve seu problema @BethGriggs?

Acho que a preocupação foi abordada para reduzir o impacto em ambientes de CI, obrigado!

fechando uma vez que o problema original foi resolvido.

@gengjiawen se você conseguir reproduzir o problema que teve ao atualizar, abra outro problema e podemos discuti-lo lá

FWIW, me deparei com isso no TravisCI: https://travis-ci.com/github/kentcdodds/advanced-react-hooks/builds/191260988

image

Acho que a preocupação original de @BethGriggs ainda é um problema 😬

hmmm 🤔 talvez devêssemos também verificar o ambiente usando @npmcli/ci-detect além de verificar se há process.stdin.isTTY @nlf ?

Atingir isso também quebrou todos os nossos scripts de CI ... Por que você introduziu uma alteração importante em uma versão menor / patch?

Para qualquer pessoa com esse problema no Circle CI, você pode definir uma variável de ambiente global para definir a variável npm_config_yes como true para todos os seus trabalhos

@FezVrasta a mudança veio na mudança Semver-Major 7.0.0. Pensamos ter corrigido o problema de CI verificando o TTY, mas parece que perdemos alguns casos extremos. Parece que o # 2047 está aberto para corrigir isso, espero, para mais ambientes de CI

publicamos o 7.0.6 hoje que deve resolver isso. agora, ignoramos totalmente o prompt se você parece estar executando em um ambiente de CI.

deixe-nos saber se você continuar a ter problemas!

Funciona para nós agora: https://github.com/testing-library/react-testing-library/pull/809/files

Obrigado pela solução rápida!

Pergunta: quando o npx7 solicita e o usuário instala o pacote ausente,

  1. onde o pacote está armazenado? Aparentemente, não é instalado como pacote npm global.
  2. como forçar npx faz para verificar e baixar a versão mais recente de "faz"? Temos problemas que o make npx está preso com a versão antiga instalada local de "makes".
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ahuglajbclajep picture ahuglajbclajep  ·  3Comentários

CliffS picture CliffS  ·  3Comentários

Cohen-Carlisle picture Cohen-Carlisle  ·  4Comentários

MadhuriGurumurthy11 picture MadhuriGurumurthy11  ·  3Comentários

theADAMJR picture theADAMJR  ·  3Comentários