Auto: 自動実行spawnSync / bin / shE2BIGの原因を特定します

作成日 2020年06月12日  ·  6コメント  ·  ソース: intuit/auto

バグを説明する

現在、私の最新のビルドはリリースステップでE2BIGエラーで失敗し

後者のように感じますが、問題をデバッグする方法がわかりません。

一時的な回避策を試し、自動実行行にコメントしますが、提案は大歓迎です!

再現するには

今それを理解しようとしています。

予想される行動

問題のあるファイルについて言及するか、エラーをスローしないでください

環境情報:

Gitlab CI&Local(arch linuxマシン)

追加のコンテキスト

これは必ずしも自動によるものではないと思います。 スポーンの問題である可能性が最も高いですが、将来同様の問題が発生した場合は、ここに投稿して、デバッグのアイデアをブレインストーミングすることが役立つと考えました。

bug hacktoberfest

最も参考になるコメント

解決策は、argsをディスクのどこかに保存し、envvarの代わりにそこからコマンドをプルさせることです。 しかし、それはプラグインにとってかなり大きな重大な変更です

ブロックを解除するために、このプラグインは同じことをします

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

全てのコメント6件

これはexecプラグインの致命的な欠陥かもしれないと思います。

E2BIGは、 execSync呼び出しに対して引数が多すぎることを意味します。 それが話している引数は、環境変数( $ARG0 )を介して渡すすべてのフック情報だけであると確信しています。

これが私たちが修正できるものであるかどうかは本当にわかりません。 この制限を文書化する必要があるかもしれませんし、コンテキスト情報の受け渡しを控えるオプションを追加する必要があるかもしれません。

解決策は、argsをディスクのどこかに保存し、envvarの代わりにそこからコマンドをプルさせることです。 しかし、それはプラグインにとってかなり大きな重大な変更です

ブロックを解除するために、このプラグインは同じことをします

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

E2BIGの解決策を見つけることができれば、それは素晴らしいことです。 (またはこの問題を見た他の人)

私は間違いなくそれについて考えます、それを回避するいくつかの方法があるはずです。 ありがとう!

execSpawn argsリストで、自動コンテキストの上にprocess.env完全に渡すことがわかります。おそらく、追加するオプションで、自動固有のenv変数のみを渡すように指定できますか?

私(興味のある傍観者)は、「ファイルに引数を保存する」ソリューションを心から支持します。 はい、それは重大な変更ですが、必要な重大な変更です。

@hipstersmoothie

ブロックを解除するために、このプラグインは同じことをします

明確にするために、これを使用するには、(Node / NPM / TypeScript以外の)リポジトリに保存し、構成ファイルに"plugins": ["path/to/file"]を設定しますか、それとも他にありますか?

このページは役に立ちましたか?
0 / 5 - 0 評価