Auto: Déterminer la cause de l'exécution automatique spawnSync /bin/sh E2BIG

Créé le 12 juin 2020  ·  6Commentaires  ·  Source: intuit/auto

Décrivez le bogue

Actuellement, ma dernière version échoue à l'étape de publication avec une erreur E2BIG. J'ai fait des recherches et j'ai découvert que cela pouvait être dû à plusieurs raisons, telles que de nombreux arguments de commande (cela ne semble pas être le cas ici) ou des textes trop volumineux.

J'ai l'impression que c'est peut-être le dernier, mais je ne sais pas comment déboguer le problème.

Je vais essayer une solution temporaire et commenter mes lignes d' exécution automatique , mais toutes les suggestions sont les bienvenues !

Reproduire

J'essaye de comprendre ça maintenant.

Comportement prévisible

Soit mentionner le fichier troublant, soit ne pas générer d'erreur

Informations environnementales :

Gitlab CI & Local (machine arch Linux)

Contexte supplémentaire

Je ne pense pas que cela soit nécessairement dû à l'auto. Très probablement un problème de spawn, j'ai juste pensé qu'il serait utile de poster ici pour tous ceux qui rencontreraient un problème similaire à l'avenir, et pour réfléchir à des idées de débogage.

bug hacktoberfest

Commentaire le plus utile

Une solution pourrait consister à stocker les arguments quelque part sur le disque et à laisser la commande tirer à partir de là au lieu d'une var env. Mais c'est un changement assez important pour le plugin

Pour vous débloquer ce plugin fait la même chose

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

Tous les 6 commentaires

Je pense que cela peut être une faille fatale dans le plugin exec .

E2BIG signifie qu'il y avait trop d'arguments pour l'appel execSync . Je suis à peu près sûr que les arguments dont il parle ne contiennent que toutes les informations de crochet que nous transmettons via des variables env ( $ARG0 ).

Je ne sais pas vraiment si c'est quelque chose que nous pouvons même corriger. Il faudra peut-être documenter cette limitation et peut-être même ajouter une option pour renoncer à transmettre les informations contextuelles.

Une solution pourrait consister à stocker les arguments quelque part sur le disque et à laisser la commande tirer à partir de là au lieu d'une var env. Mais c'est un changement assez important pour le plugin

Pour vous débloquer ce plugin fait la même chose

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 vous pouvez trouver une solution à E2BIG, ce serait génial ! (ou toute autre personne qui voit ce problème)

Je vais certainement y réfléchir, il devrait y avoir un moyen de contourner cela. Merci!

Je vois dans la liste d'arguments execSpawn que nous passons process.env entièrement au-dessus du contexte automatique, peut-être que l'option que nous ajoutons pourrait spécifier de ne transmettre que des variables d'environnement spécifiques à l'auto ?

Je (un spectateur intéressé) approuve de tout cœur la solution "stocker les arguments dans un fichier". Oui, c'est un changement radical, mais c'est un changement radical dont vous avez besoin .

@hipstersmoothie

Pour vous débloquer ce plugin fait la même chose

Pour être clair, pour l'utiliser, je l'enregistre simplement dans mon référentiel (non Node/NPM/TypeScript) et définit "plugins": ["path/to/file"] dans mon fichier de configuration, ou y a-t-il plus?

Cette page vous a été utile?
0 / 5 - 0 notes