Auto: Determine a causa do auto-exec spawnSync / bin / sh E2BIG

Criado em 12 jun. 2020  ·  6Comentários  ·  Fonte: intuit/auto

Descreva o bug

Atualmente, minha versão mais recente falha na etapa de lançamento com um erro E2BIG. Eu fiz algumas pesquisas e descobri que isso pode ser devido a alguns motivos, como muitos argumentos de comando (não parece ser o caso aqui) ou textos que são muito grandes.

Acho que pode ser o último, mas não tenho certeza de como depurar o problema.

Vou tentar uma solução temporária e comentar minhas linhas de execução automática , mas todas as sugestões são bem-vindas!

Reproduzir

Tentando descobrir isso agora.

Comportamento esperado

Mencione o arquivo problemático ou não gere um erro

Informações ambientais:

Gitlab CI e Local (máquina arch linux)

Contexto adicional

Não acho que isso seja necessariamente devido ao automóvel. Provavelmente um problema de spawn, mas achei que seria útil postar aqui para qualquer um que se deparar com um problema semelhante no futuro e para ideias de depuração de tempestade cerebral.

bug hacktoberfest

Comentários muito úteis

Uma solução poderia ser armazenar os argumentos em algum lugar no disco e deixar o comando puxar de lá em vez de um env var. Mas essa é uma grande mudança significativa para o plug-in

Para desbloquear você, este plugin faz a mesma coisa

const { SEMVER, execPromise, getCurrentBranch } = require("@auto-it/core");

module.exports = class NextCherryPickPlugin {
  constructor() {
    this.name = "update docs";
  }

  /**
   * Setup the plugin
   *
   * <strong i="7">@param</strong> {import('@auto-canary/core').default} auto
   */
  apply(auto) {
    auto.hooks.beforeCommitChangelog.tapPromise(this.name, async (config) => {
      await execPromise("yarn", ["lint:doc:fix"]);
      await execPromise("git", ["add", "."]);
    });
  }
};

Todos 6 comentários

Acho que isso pode ser uma falha fatal no plug-in exec .

E2BIG significa que havia muitos argumentos para a chamada execSync . Tenho certeza de que o argumento está falando sobre isso, apenas todas as informações de gancho que passamos por meio das variáveis ​​env ( $ARG0 ).

Não tenho certeza se isso é algo que podemos consertar. Pode ter que documentar essa limitação e talvez até adicionar uma opção para não passar as informações contextuais.

Uma solução poderia ser armazenar os argumentos em algum lugar no disco e deixar o comando puxar de lá em vez de um env var. Mas essa é uma grande mudança significativa para o plug-in

Para desbloquear você, este plugin faz a mesma coisa

const { SEMVER, execPromise, getCurrentBranch } = require("@auto-it/core");

module.exports = class NextCherryPickPlugin {
  constructor() {
    this.name = "update docs";
  }

  /**
   * Setup the plugin
   *
   * <strong i="7">@param</strong> {import('@auto-canary/core').default} auto
   */
  apply(auto) {
    auto.hooks.beforeCommitChangelog.tapPromise(this.name, async (config) => {
      await execPromise("yarn", ["lint:doc:fix"]);
      await execPromise("git", ["add", "."]);
    });
  }
};

Se você puder encontrar uma solução para o E2BIG, isso seria incrível! (ou qualquer outra pessoa que veja este problema)

Definitivamente vou pensar sobre isso, deve haver alguma maneira de contornar isso. Obrigado!

Eu vejo na lista de args execSpawn que passamos process.env totalmente no topo do contexto automático, talvez a opção que adicionamos poderia especificar para passar apenas vars env auto-específicos?

Eu (um espectador interessado) endosso de todo o coração a solução "armazenar argumentos em um arquivo". Sim, é uma alteração significativa, mas é uma alteração significativa de que você precisa .

@hipstersmoothie

Para desbloquear você, este plugin faz a mesma coisa

Para ser claro, para usar isso, eu apenas salvei em meu repositório (não-Node / NPM / TypeScript) e defino "plugins": ["path/to/file"] em meu arquivo de configuração, ou há mais do que isso?

Esta página foi útil?
0 / 5 - 0 avaliações