さまざまなアプリで git monorepo を使用しています。現在、アプリのすべてのパイプラインを含むルート フォルダーに単一の Jenkinsfile があります。commit が 1 つのアプリのみを変更した場合、すべてのアプリに対して完全なパイプラインを実行するのは非常に時間がかかります。
分岐には GitFlow のようなアプローチを使用しているため、Jenkins のマルチブランチ パイプライン ジョブはプロジェクトに最適です。
Jenkins で複数のジョブを実行する方法を探しています。それぞれのジョブは、適切なアプリケーションのコードが変更された場合にのみトリガーされます。
私にとって完璧なソリューションは次のようになります。
Jenkins には複数のマルチブランチ パイプライン ジョブがあります。それぞれが、指定されたディレクトリとサブディレクトリへの変更のみを探します。それぞれが独自の Jenkinsfile を使用します。ジョブは X 分ごとに git をプルし、既存のブランチの適切なディレクトリに変更がある場合 - ビルドを開始します。適切なディレクトリへの変更を伴う新しいブランチがある場合 - ビルドを開始します。
この実装を妨げているもの
マルチブランチ パイプラインによるスキャン実行中に無視する必要があるフォルダーへのコミットを定義する方法がありません。マルチブランチ パイプラインの「追加の動作」には、「ポーリングは特定のパスへのコミットを無視する」オプションがありませんが、パイプラインまたはフリースタイル ジョブにはあります。しかし、マルチブランチ パイプラインを使用したいです。
「project1」のみが変更された新しいブランチがある場合、「project2」のマルチブランチパイプラインがトリガーされるたびに、とにかくこの新しいブランチを検出してビルドするため、ここで説明するソリューションはうまくいきません。適切なコードに変更があったかどうかに関係なく、新しいブランチごとに、Multibranch パイプラインのそれぞれが少なくとも 1 回実行されることを意味します。
同じgitリポジトリを監視しているが、適切なコードが変更されたときにのみトリガーされるいくつかのマルチブランチパイプラインを実装する方法について、助けや提案を感謝します