Auto: ベータ版のモノレポの「自動カナリア」が失敗している

作成日 2019年09月27日  ·  14コメント  ·  ソース: intuit/auto

バグを説明する

Lernaモノレポでauto canaryを実行すると、複数の問題が発生します。

  1. バージョンは9.0.0-beta.33から9.0.1-canary.809.1.1a2be58f.0にバンプされていますが、代わりに9.0.0-canary...である必要があります。

  2. 最初はError: Running command 'npx' failedと書いてあります

  3. You cannot publish over the previously published versions: 9.0.0-beta.33と言って、npmへの公開に失敗します

私が公開しようとしているPRは次のとおりです: https

再現するには

私はまだ最小限の再現を持っていません。 必要に応じてLMK。

予想される行動

すべてのパッケージがバージョンとして9.0.0-canary.809.1.1a2be58f.0で公開されることを期待していました。

デスクトップ(次の情報を入力してください):

  • OS:macOS v10.14.5
  • ブラウザ:N / A
  • バージョン:v7.6.0

追加のコンテキスト

GH_TOKEN="xxx" auto canary --build 1 --pr 809
Error: Running command 'npx' failed


Changes:
 - @react-spring/addons: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/animated: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/core: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - react-spring: 9.0.0-beta.34 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/shared: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/konva: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/native: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/three: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/web: 9.0.0-beta.34 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/zdog: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0



lerna notice cli v3.15.0
lerna info current version 9.0.0-beta.34
lerna WARN force-publish all packages
lerna info Assuming all packages changed
lerna WARN version Skipping working tree validation, proceed at your own risk
lerna info auto-confirmed 
lerna info execute Skipping git tag/commit
lerna info execute Skipping git push
lerna info execute Skipping releases
lerna info publish Publishing packages to npm...
lerna notice Skipping all user and access validation due to third-party registry
lerna notice Make sure you're authenticated properly ¯\_(ツ)_/¯
lerna http fetch PUT 403 https://registry.npmjs.org/@react-spring%2fshared 1475ms
lerna ERR! E403 You cannot publish over the previously published versions: 9.0.0-beta.33.

    at ChildProcess.<anonymous> (~/.nvm/versions/node/v11.10.1/pnpm-global/3/node_modules/.pnpm/registry.npmjs.org/@auto-it/core/7.6.1/node_modules/@auto-it/core/dist/utils/exec-promise.js:98:36)
    at ChildProcess.emit (events.js:197:13)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12)
bug

全てのコメント14件

また、各パッケージのpackage.jsonpublishConfig.directoryフィールドは尊重されていません。

これ見てみます!

  1. バージョンは9.0.0-beta.33から9.0.1-canary.809.1.1a2be58f.0にバンプされていますが、代わりに9.0.0-canary ...である必要があります。

そこにある余分なハッシュを取り除くために#609を開きました。 バージョンの.0部分は、 --preidフラグがあるためです。 残りのバージョンではこれが必要なので、実際になくなることはありません。

@hipstersmoothieああ、私はそれについて不平を言っていませんでした。 ハッシュを入力するのに時間をかけたくありませんでした。 😆その文は、実際には、まだ9.0.0であるはずなのに9.0.1方法を示しています。

ああ、分かった。 その場合、それは予想される動作です。 カナリアバージョンは、シミュレートされた「次の」バージョンです。 例えば:

PRにはmajorラベルがあります=>これらの変更が加えられたカナリアには、これらの主要な変更が含まれており、新しいメジャーバージョンである必要があります

9.0.1になった理由は、ラベルが見つからない場合、デフォルトでpatchになるためです。

ああ、わかりました。 latestタグは現在8.0.27指しているので、とにかくauto canary9.0.1を使用するとは思わないでしょう。 9.0.0-beta.33の存在によって混乱していたに違いありません。 バージョンを9.0.0ままにする方法はありますか?

彼らはそれが今のように振る舞う方法です、それは「最新リリース」を見て、あなたはローカルバージョンを見て、より高いものを使用します。 したがって、この場合、それは9.0.0-beta.33解決されました。

バージョンを9.0.0のままにする方法はありますか?

ローカルで、 preminorの代わりにprerelease使用してlernaを実行すると、バージョンが増加しません。 カナリアコマンドにprereleaseを取得するには、フラグを追加するか、 prereleaseラベルを使用できますが、この機能は自動ではありません。

以前に公開されたバージョンを超えて公開することはできないと言って、npmへの公開に失敗します:9.0.0-beta.33

これは、 package.jsondistフォルダーに入る際の問題のようです。 prepareステップは、autoが実行する前に実行されるため、バージョンは最初に存在していたものになります。 この場合、「9.0.0-beta.33」

lernaを実行すると、この古いバージョンのpackage.jsonが取得されます。これには、すでに公開されているバージョンが含まれており、再度公開を試みます。

ローカルで、 prerelease代わりにpreminor prerelease使用してlernaを実行すると、バージョンが増加しません。 canaryコマンドにprereleaseを取得するには、フラグを追加するか、 prereleaseラベルを使用できますが、この機能は自動ではありません。

それで十分なはずです。 「 beta / nextバージョンを構築するブランチからローカルでauto canaryを実行する」ことは、エッジケースだと思いますか? そうでない場合は、ここで自動サポートが必要になる可能性があります。 また、CIからauto canaryを実行した場合でも、このエッジケースに遭遇しますか?

lernaを実行すると、この古いバージョンのpackage.jsonが取得されます。これには、すでに公開されているバージョンが含まれており、再度公開を試みます。

LernaはpublishConfig.directoryここを参照)をサポートしていますが、Lernaとの統合により、何らかの形でそのコードパスが回避されている可能性があります。

問題なのはこの線です。

package.json、readmeなどをdistフォルダーにコピーして公開するだけなので、非常に特定の時間にprepareスクリプトを実行する必要があります。

  1. lerna version -package.jsonをカナリアバージョンに変更します
  2. prepare -最終パッケージをdistフォルダーに配置
  3. lerna publish -正しいバージョンのパッケージdistフォルダーを公開します

だから、このワークフローのためにあなたは、ライフサイクルのスクリプトを実行してみましょう必要がありますignoreScripts (まったくかだけではない)をfalseに設定する必要があります。

「ベータ版/次のバージョンを構築するブランチからローカルで自動カナリアを実行する」ことは、エッジケースだと思いますか? そうでない場合は、ここで自動サポートが必要になる可能性があります。

ベータ版/次のサポートは実際にはまだ組み込まれていませんが、それに取り組むときにこの問題に戻ります。

おそらく、Lernaとの統合は、どういうわけかそのコードパスを回避しているのでしょう。

lernaの使用法については何も想定していないので、これは実際には問題にはならないはずです。 ここでは、すべての面倒な作業を行うためにlernaを呼び出していることがわかります

@aleclarson ignoreScripts削除した後、カナリアを公開することができました。 私はこの問題のすべてに対処したと思います、もし私が閉じてください!

大丈夫甘い! 現在、回避策が用意されているため、すぐに確認することはありません。

これをもう一度試してみたら、必ず再開します。 ;)

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