Auto: 1぀のリポゞトリに耇数のパッケヌゞマネヌゞャヌプラグむン

䜜成日 2020幎01月28日  Â·  16コメント  Â·  ゜ヌス: intuit/auto

機胜リク゚ストは問題に関連しおいたすか

珟圚、プロゞェクトごずに䜿甚できるパッケヌゞマネヌゞャヌプラグむンは1぀だけです。 これは、1぀のリポゞトリでchrome-web-storeプラグむンnpmプラグむンを䜿甚できないこずを意味したす。

垌望する゜リュヌションを説明しおください

この制限は䞻に、珟圚autoがgitプロゞェクトに基づいお機胜し、パッケヌゞの抂念がないためです。

npmプラグむンでは、倉曎ログ管理ずsub-packages個別リリヌスを行う方法を瀺したした。 これはすべおlernaをベヌスにしおおり、実際にはcore移動するこずはできたせん。

しかし、各パッケヌゞマネヌゞャヌプラグむンはパッケヌゞマネヌゞャヌ甚の远加ファむル git-tagを陀くすべおに䟝存しおいるため、次のようなこずを非垞に簡単に行うこずができたす。

䟋npmプラグむン

  1. ロヌドされるず、 package.json シングルたたはレルナを芋぀けようずしたす
  2. autoは、そのフォルダヌ内のすべおのものをpackage䞀郚ず芋なしたす
  3. autoは、 packageごずに䞀意の倉曎ログを管理したす

これは朜圚的に悪い経隓である可胜性がありたす。 代わりに、フォルダヌのすべおのパッケヌゞマネヌゞャヌプラグむンに远加の構成オプションを远加するだけで枈みたす。 これはgit-tgプラグむンもサポヌトする可胜性がありたすそしおそれを機胜させるために必芁になるでしょう。

朜圚的な問題

  • 各プラグむンは珟圚、コミット、タグ付け、およびプッシュを行っおいたす。 これにより、倚くのノむズが発生したす。 おそらくそれらのgitアクションをコアに移動する必芁があるので、それは䞀床だけ起こりたすか あなたは、それぞれに別々のコミットをしたいかもしれたせんが、 package 。
  • ルヌト倉曎ログ-このタむプのプロゞェクトではおそらく意味がありたせん。 各パッケヌゞマネヌゞャヌプラグむンは、管理察象のpackageごずに倉曎ログも生成したす。

怜蚎した代替案を説明しおください

本圓に䜕もありたせん。

enhancement

党おのコメント16件

もう少し考えおみるず、新しいトップレベルの構成オプションを導入する方が理にかなっおいるず思いたす。

{
  // Still have some global config at root
  "name": "Andrew Lisowski",
  "email": "[email protected]",
  // Plugins used for every package
  "plugins": ["conventional-commits"],
  "packages": [
    // Target specific directories and apply a set of plugins to them
    {
      "target": "www",
      "plugins": ["git-tag"]
    },
    {
      "target": "api",
      "plugins": ["npm"]
    },
    // Specify a pattern or even and array of patterns or directories
    {
      "target": ["packages/**",  "utils"],
      "plugins": ["npm"]
    },
    {
      "target": "web-store",
      "plugins": [
        "chrome-web-store",
        // Whole lifecycle is run for each package so you can have package plugins
        ["upload-assets", { "assets": ["./path/to/file"] }]
      ]
    }
  ]
}

これを実珟するには、むテレヌタ関数を䜿甚しお耇数のものでshipitを実行し、同じ量のコミットを生成できるず思いたす。

最新の䟋

  1. すべお同時に実行する
  2. 倉曎ログをコミットする前の利回り
  3. 倉曎ログを䞀床にコミットする
  4. バヌゞョンがぶ぀かるたでの利回り
  5. 必芁に応じおバヌゞョンをコミットする
  6. 最埌たで実行

この蚭定で、あなたは本圓にすべお䞀緒にlernaをスキップするこずができたす

{
  "name": "Andrew Lisowski",
  "email": "[email protected]",
  "packages": [
    {
      "target": "packages/**",
      "plugins": ["npm"]
    }
  ]
}

package䞀臎するコミットがない堎合、リリヌスは行われたせん。 これにより、 lernaを䜿甚せずに、はるかに簡単な方法で独立したモノレポ管理が実珟したす。 固定バヌゞョンのmonorepoが必芁な堎合は、埓来のルヌトを䜿甚するのがよいでしょう。

これのもう1぀の優れた機胜は、異なるバヌゞョン管理スキヌム fixedずindependent を䜿甚しおリポゞトリに2぀のleranプロゞェクトを含めるこずができるこずです。

{
  "name": "Andrew Lisowski",
  "email": "[email protected]",
  "packages": [
    {
      "target": "fixed-monorepo",
      "plugins": ["npm"]
    },
    {
      "target": "independent-monorepo",
      "plugins": ["npm"]
    }
  ]
}

これは、1぀のリポゞトリでchrome-web-storeプラグむンずnpmプラグむンを䜿甚できるこずを意味したす。

同じプロゞェクトで䞡方を䜿甚するこずは_できない_ずいう意味だず思いたすか

各プラグむンは珟圚、コミット、タグ付け、およびプッシュを行っおいたす。 これにより、倚くのノむズが発生したす。 おそらくそれらのgitアクションをコアに移動する必芁があるので、それは䞀床だけ起こりたすか ただし、パッケヌゞごずに個別のコミットが必芁になる堎合がありたす。

ハむブリッドアプロヌチを行うこずは理にかなっおいるかもしれたせん。 各プラグむンがコミットするかもしれたせんが、プッシュするのは1回だけですか

各フォルダが独自のパッケヌゞリリヌスである䞖界で、タグがどのように機胜するかはよくわかりたせん。 䜜成するバヌゞョンごずにタグを䜜成したすか 最埌に䜜りたすか

もう少し考えおみるず、新しいトップレベルの構成オプションを導入する方が理にかなっおいるず思いたす。

パッケヌゞごずにリリヌス゚クスペリ゚ンスをカスタマむズできるずいうアむデアが気に入っおいたす。 docsパッケヌゞずラむブラリパッケヌゞのs3 / ghペヌゞのデプロむを管理できるこずのいく぀かの利点を確実に理解できたす。

凊理する必芁があるのは、耇数のリリヌスパむプラむンにパッケヌゞを含めるこずです。 次の堎合はどうなりたすか。

{
  "name": "Andrew Lisowski",
  "email": "[email protected]",
  "packages": [
    {
      "target": "packages/**",
      "plugins": ["npm"]
    },
    {
      "target": "packages/chrome-ext",
      "plugins": ["chrome-web-store"]
    },
  ]
}

chrome-extパッケヌゞはnpmずwebstore䞡方に公開されたすか たたは、最初に宣蚀されおいるため、 npmリリヌスが勝ちたすか

各フォルダが独自のパッケヌゞリリヌスである䞖界で、タグがどのように機胜するかはよくわかりたせん。 䜜成するバヌゞョンごずにタグを䜜成したすか 最埌に䜜りたすか

レルナの振る舞いに合わせるこずができるず思いたす。 1回のコミットでたくさんのタグがありたす。 その埌、各タグは独自のリリヌスになりたす

chrome-extパッケヌゞはnpmずりェブストアの䞡方に公開されたすか それずも、最初に宣蚀されおいるため、npmリリヌスが勝ちたすか

その堎合、はい、䞡方を実行しようずしたす。 しかし、それは単に悪い構成です。 これを機胜ずしお䜿甚しお、パッケヌゞを2぀の異なるレゞストリ䟋npmずgithubパッケヌゞレゞストリに公開するず蚀うこずができたす。

{
  "name": "Andrew Lisowski",
  "email": "[email protected]",
  "packages": [
    {
      "target": "packages/**",
      "plugins": [["npm", { registry: "https://npm" }]]
    },
    {
      "target": "packages/**",
      "plugins": [["npm", { registry: "https://github-package-registry" }]]
    },
  ]
}

これは面癜そうですね...そしお耇雑です😅

私は䞀般的に👍怜出で過床に賢くしようずするよりも構成を持っおいたすそれは予期しない方法で故障し、テストするのが難しいためです。

私の最初の質問は、これのデフォルトの状態がどのように芋えるかずいうこずだず思いたす。 npmプラグむンがある堎合、それが機胜する前に構成を远加する必芁がありたすか 他の人ず同じ質問。

gitむンタラクションに関しおは、gitむンタラクションは䞀般的にプラグむンパむプラむンの䞀郚である必芁があるように思われたす。 プラグむンがコミットを実行する必芁がある堎合は、コミット可胜なフックを利甚できる必芁がありたす。 プッシュは、CIの実行方法などに圱響を䞎えるため、コアでのみ凊理する必芁がありたす。

npmプラグむンがある堎合、それが機胜する前に構成を远加する必芁がありたすか

今日機胜する構成は、 packages䞖界で機胜するはずです。 したがっお、倉曎は必芁ありたせん。 重倧な倉曎のほずんどはノヌドAPI偎であり、通垞のナヌザヌには衚瀺されたせん。

プラグむンがコミットを実行する必芁がある堎合は、コミット可胜なフックを利甚できる必芁がありたす。

私はこの考えが奜きです。 このgitむンタラクションをauto内で圢匏化するず、おそらく䟿利です。 そしお、圌らがこのフックを䜿甚しない堎合、それはもう少しノむズを意味したす䟋远加のコミットず远加のプッシュ

私はたた、モノレポでAutoを䜿甚する方法を考えおいお、あなたのニヌズに合うかもしれないわずかに異なるアプロヌチを思い぀きたした。

基本的に、モノリポゞトリが1぀ある堎合は、各サブプロゞェクトに必芁なプラグむンをセットアップできる独自の.autorcファむルを持぀耇数のサブディレクトリを䜜成できたす。

次に、必芁に応じお各プロゞェクトを異なる時間にリリヌスできるように、プロゞェクトごずに異なるプレフィックスを付けるこずを遞択できたす。 たずえば、sub-project1のリリヌスにsub-project/v1.4.5タグを付け、別のプロゞェクトにsub-project2/v9.9.9タグを付けるこずができたす。

Autoは、 git describe --tags --matches "sub-project1/*"ようなものを䜿甚しお、それに応じお各プロゞェクトのタグを取埗および曎新できたす。

ちょっずした考え。

それは実際、私が取っおいるアプロヌチにかなり近いものです。 私は
今週取り組んでいたす。

これたでのずころ、いく぀かのコマンドにそのフラグを远加する必芁がありたした—䞀臎。
かなり順調に進んでいたす。

私は「パッケヌゞ」フィヌルドアプロヌチを採甚したしたが、基本的には
「autorc」の配列

プレフィックスを取埗するために、名前を提䟛するプラグむンのフックを远加したした。 この
プラグむンがマルチパッケヌゞ互換である堎合、自動ぞのシグナル䌝達にも圹立ちたす

2020幎1月29日氎曜日午埌9時11分アレハンドロバリ゚ントス<
[email protected]>は次のように曞いおいたす

モノレポでオヌトの䜿い方も考えおいお思い぀いた
あなたのニヌズに合うかもしれないわずかに異なるアプロヌチ。

基本的に、モノレポが1぀ある堎合は、耇数のサブディレクトリを持぀こずができたす。
それぞれに独自の.autorcファむルがあり、プラグむンをセットアップできたす。
各サブプロゞェクトが必芁になりたす。

次に、プロゞェクトごずに異なるプレフィックスを蚭定しお、次のようにするこずができたす。
各プロゞェクトは、必芁に応じお異なる時間にリリヌスできたす。 たずえば、
sub-project1のリリヌスは、sub-project /v1.4.5および
別のプロゞェクトは、タグsub-project2 /v9.9.9を取埗したす

Autoは、git describe --tags--matchesのようなものを䜿甚できたす。
「sub-project1 / *」を䜿甚しお、各プロゞェクトのタグを取埗および曎新したす。

ちょっずした考え。

—
スレッドを䜜成したため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/intuit/auto/issues/917?email_source=notifications&email_token=AAJDEBGUZR5HF6P3OKRILTDRAJOOXA5CNFSM4KMLWYF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5
たたは賌読を解陀する
https://github.com/notifications/unsubscribe-auth/AAJDEBDX72NB5Z7ZJPTDHVLRAJOOXANCNFSM4KMLWYFQ
。

戻っおこれをもう䞀床読んで、私は実際にかなり興奮しおいたす パッケヌゞ名の前に付けられた耇数のタグは本圓に良い音です。 たた、私はpackagesフィヌルドが本圓に奜きです。

@hipstersmoothie今日、

@vincentbrigliaは、GitHubパッケヌゞに公開するプラグむンが機胜したすか npmプラグむンからかなり䟿乗する可胜性がありたす。 nextずlatestリリヌスは簡単ですが、カナリアはあたり意味がありたせん。 考え

@hipstersmoothie同じパッケヌゞをNPMレゞストリずGHPRレゞストリに公開する堎合がありたす。 ここでの理由は、GHPRは、そのように宣䌝されおいおも、パッケヌゞを正しくプロキシしないためです。 根本的な問題は、npmずgithubで同じスコヌプを䜿甚しおいるこずです。

私たちは䞻に密宀で開発を行っおおり、カナリアビルドを䜿甚しお、 feature branches > nextから蚭蚈チヌムず䌚話/承認を行っおいるため、カナリアビルドはこのコンテキストでも匕き続き圹立ちたす。 npmプラグむンは珟圚この機胜を提䟛しおいるので、それを倱うのは残念です。

GHPRを䜿甚する堎合のコンテキストは、䞀般に、それがプラむベヌトな「組織」コンテキストで公開する䞻芁な堎所であり、コンポヌネントを公開する堎合は、npmjs.orgがセカンダリであるず思いたす。 私は誰もgithubからパブリックコンポヌネントをむンストヌルするのを芋たこずがありたせん。 オヌプン゜ヌスのコンテキストでは、通垞はnpmjsであり、GHPRやその他のプラむベヌトパッケヌゞレゞストリはありたせん。

ちなみに、特定のGHPRプラグむンに぀いお蚀及しおいるので、次の週に、いく぀かのルヌルに基づいおパッケヌゞバヌゞョンを削陀する自動プラグむンを䜜成する時間を確保したした組織は50Gbのパッケヌゞに制限されおおり、Dockerが含たれおいたす画像

  • 範囲内の最埌のカナリアを削陀したす
  • 範囲内の最埌からn番目を削陀したす
  • ..。

たた、v10で䜜業が開始されるたで、特定のghprパブリッシャヌを䜜成するこずを喜んでお埅ちしおいたす。ここで玹介するアむデアは非垞に゚キサむティングであり、おそらくより「将来の蚌拠」です。

ずりあえず、パブリックずプラむベヌトを同時に公開せずに生きるこずはできたすが、少なくずも、これが私からのナヌスケヌスであるこずをご存知でしょう。

私は「セカンダリパッケヌゞレゞストリ」プラグむンに぀いおもっず考えおいたした。 したがっお、npmプラグむンはそれず同じように機胜し、構成されおいるレゞストリに公開したす。 次に、この新しいプラグむンは2番目のレゞストリに公開しnpmかghprかは関係ありたせん、HEADコミットにあるバヌゞョンをリリヌスしたす。

ちなみに、特定のGHPRプラグむンに぀いお蚀及しおいるので、次の週に、いく぀かのルヌルに基づいおパッケヌゞバヌゞョンを削陀する自動プラグむンを䜜成する時間を確保したした組織は50Gbのパッケヌゞに制限されおおり、Dockerが含たれおいたす画像

これは良い機胜のようです。 私はそれらの制限が存圚するこずを知りたせんでした

この新しいプラグむンは、2番目のレゞストリに公開しnpmかghprかは関係ありたせん、HEADコミットにあるバヌゞョンをリリヌスしたす。

たあそれは間違いなくうたくいくでしょう 線集私たちのシナリオにも

やあ このスレッドに関する自動の珟圚の状態は䜕ですか 同じリリヌスから耇数のものを公開するこずは可胜ですか

各パッケヌゞマネヌゞャヌプラグむンは、パッケヌゞマネヌゞャヌ甚の远加ファむルに䟝存しおいるため git-tagを陀くすべお

これは間違った仮定だず思いたす。 dockerプラグむンは任意のファむルに䟝存しおいたすか 䞍必芁かもしれないので、悪い䟋かもしれたせん。 次にもう1぀ありたす。Autoをsbt Scalaの最も䞀般的なビルドツヌルで䜿甚するこずに興味があり、機械可読なJSON / XML構成がありたせん。 sbtビルドはScalaコヌドで構成されおおり、ビルドに関する情報を抜出するには、䜕らかの方法でsbtず通信する必芁がありたす。

これにより、はるかに簡単な方法で独立したモノレポ管理が実珟したす

たた、このスレッドから、目暙は、異なる公開ニヌズを持぀耇数のサブプロゞェクトを持぀モノレポプロゞェクトに察応するこずであるように思われたす。 さたざたな皮類のアヌティファクトを生成する単䞀のプロゞェクトはどうですか たずえば、Dockerむメヌゞず構成アヌカむブどこかにアップロヌドされる予定。 たたは、ラむブラリずしおNPMに公開したり、GitHubリリヌスのアクションずしお公開したりできるGitHubアクション。

各プラグむンは珟圚、コミット、タグ付け、およびプッシュを行っおいたす。 これにより、倚くのノむズが発生したす。 おそらくそれらのgitアクションをコアに移動する必芁があるので、それは䞀床だけ起こりたすか ただし、 packageごずに個別のコミットが必芁になる堎合がありたす。

これがプラグむンの珟圚の実装の䞻な問題だず思いたす。 これは、各コマンドが「1぀のこずだけを本圓にうたく行う」ずいう䞻匵に぀いおの私の混乱に戻りたす。 私の意芋では、 publishフックは、コミットを䜜成したりgitタグをプッシュしたりするのではなく、特定のパッケヌゞマネヌゞャヌに察しお実際に_のみ公開_する必芁がありたす。 各パブリッシングプラグむンがパッケヌゞマネヌゞャヌの詳现の実装のみに焊点を圓おるこずができる堎合、プロセスの共通郚分を再利甚および/たたは共有できたす。 Autoでこれを達成するこずはただ可胜ですか、それずもNPMのようなプロゞェクトに偏りすぎおいたすか

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡