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.
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?
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