Auto: Determinar la causa del spawnSync / bin / sh E2BIG de ejecución automática

Creado en 12 jun. 2020  ·  6Comentarios  ·  Fuente: intuit/auto

Describe el error

Actualmente, mi última compilación falla en el paso de lanzamiento con un error E2BIG. Investigué un poco y descubrí que esto puede deberse a algunas razones, como muchos argumentos de comando (no parece ser el caso aquí) o textos que son demasiado grandes.

Siento que puede ser lo último, pero no estoy seguro de cómo depurar el problema.

Intentaré un trabajo temporal y comentaré mis líneas de ejecución automática , ¡pero cualquier sugerencia es bienvenida!

Reproducir

Tratando de averiguarlo ahora mismo.

Comportamiento esperado

Mencione el archivo problemático o no arroje un error

Información medioambiental:

Gitlab CI & Local (máquina arch linux)

Contexto adicional

No creo que esto se deba necesariamente al automóvil. Lo más probable es que se trate de un problema de generación, solo pensé que sería útil publicar aquí para cualquiera que se encuentre con un problema similar en el futuro, y para pensar en ideas de depuración.

bug hacktoberfest

Comentario más útil

Una solución podría ser almacenar los argumentos en algún lugar del disco y dejar que el comando se extraiga de allí en lugar de una var env. Pero ese es un cambio bastante importante para el complemento.

Para desbloquearte, este complemento hace lo mismo

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 comentarios

Creo que esto puede ser una falla fatal en el complemento exec .

E2BIG significa que hubo demasiados argumentos en la llamada execSync . Estoy bastante seguro de que los argumentos de los que se habla es solo toda la información del gancho que pasamos a través de las variables env ( $ARG0 ).

No estoy realmente seguro de si esto es algo que podamos arreglar. Es posible que tenga que documentar esta limitación y tal vez incluso agregar una opción para renunciar a pasar la información contextual.

Una solución podría ser almacenar los argumentos en algún lugar del disco y dejar que el comando se extraiga de allí en lugar de una var env. Pero ese es un cambio bastante importante para el complemento.

Para desbloquearte, este complemento hace lo mismo

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", "."]);
    });
  }
};

Si puede encontrar una solución para E2BIG, ¡sería increíble! (o cualquier otra persona que vea este problema)

Definitivamente lo pensaré, debería haber alguna forma de solucionarlo. ¡Gracias!

Veo que en la lista de argumentos de execSpawn pasamos process.env completamente en la parte superior del contexto automático, ¿tal vez la opción que agregamos podría especificar que solo pase variables de entorno específicas de forma automática?

Yo (un espectador interesado) apoyo incondicionalmente la solución de "almacenar argumentos en un archivo". Sí, es un cambio decisivo, pero lo que necesita es un cambio

@hiptersmoothie

Para desbloquearte, este complemento hace lo mismo

Para ser claros, para usar esto, simplemente lo guardo en mi repositorio (que no es de nodo / NPM / TypeScript) y configuro "plugins": ["path/to/file"] en mi archivo de configuración, ¿o hay más?

¿Fue útil esta página
0 / 5 - 0 calificaciones