13

マルチモジュールの Maven プロジェクトがあります。

root
    SubmoduleA
        src
        pom.xml      
    SubmoduleB
        src
        pom.xml
    pom.xml
    .gitlab-ci.yml

SubmoduleA のみに影響するコードを誰かがチェックインしたときに、SubmoduleA でのみ CI パイプラインをトリガーする方法はありますか? たとえば、誰かが SubmoduleA に変更を加えたとします。彼らがコミットしてプッシュしたら、SubmoduleB に変更がなかったので、SubmoduleA でのみ build->test->deploy を自動的に実行したいと考えています。

レポ内の特定のサブモジュールまたはサブプロジェクトのトリガーとジョブを指定する方法はありますか?

4

3 に答える 3

3

そのサブモジュール用の gitlab プロジェクトを作成する必要があり、そのサブモジュールには独自の .gitlab-ci.yml が必要だと思います。その時点で、gitlab-ci-runner 自体の中でビルド可能になります。

私は Maven (または Java) の専門家ではありませんが、大規模なプロジェクトでは、サブモジュールが独自の社内リポジトリに格納された個別のバイナリ ビルド ライブラリになる可能性があると想像しています。ビルドで jar を生成および使用し、Maven 自体を使用してそれらを提供します。Maven は、組み込みの依存関係の解決とパッケージのフェッチ機能を使用してダウンロードできます。おそらく、大規模な Java プロジェクトのビルド シナリオでは、git サブモジュールよりも優れているでしょう。

私は今、.Net の世界でカスタム ナゲット フィードを使用してこれを行っています。その結果は、ビルドが行われ、ビルド サーバーのリソースがソース インクルードとそれらのモジュールの再コンパイルによって無駄にされないという点で、あなたが行っていることと似ています。時間。

于 2016-10-11T11:19:40.470 に答える
1

Gitlab には、CI/CD を構築するためのいくつかのオプションがあります。

  • 基本
  • DAG
  • 子/親

それらを混ぜることができます。それらは相互に排他的ではありません。

あなたは子供/親に興味があります

stages:
  - triggers

trigger_a:
  stage: triggers
  trigger:
    include: a/.gitlab-ci.yml
  rules:
    - changes:
        - a/*

trigger_b:
  stage: triggers
  trigger:
    include: b/.gitlab-ci.yml
  rules:
    - changes:
        - b/*

a次に、およびプロジェクトのパイプラインを含める必要がありbます。詳細については、ドキュメントを参照してください。

于 2021-10-31T23:53:53.127 に答える