8

私たちのプロジェクトはモノリポジトリ内にネストされています。これを想像してみてください。「projects」フォルダーにプロジェクトがあります。たとえば、「プロジェクト/私たちのプロジェクト」。.drone.yml を "our-project" だけにチェックインできるようにしたいのですが、Drone はプロジェクトのルートにある構成ファイルを必要としているようです。これで問題ありません。"コマンド」セクションをビルドします。私たちが直面している問題は、「私たちのプロジェクト」の何かが変更されたときにのみビルドを実行したいということです。ドローンで正確にそれを行う方法を見つけることができないので、次の最も近い賭けは条件です、この「our-project / some-branch」のように、「our-project」の名前空間をすべてブランチにすることができると思います。次に、「our-project/some-branch」と「master」でのみビルドを実行する条件を設定できます。これにより、他のプロジェクト ブランチから実行している「偽のビルド」の数が制限されます。

build:
  when:
    branch:
      - master
      - our-project/*

問題は、"our-project/ " ブランチから "master" ブランチにリクエストをプルしようとすると、ビルドが実行されないことです。 -プロジェクト/ "

私の質問は 2 つあります: 1. モノ リポジトリ パターン (複数のプロジェクト、1 つのリポジトリ) を使用してドローンを活用する最善の方法は何ですか? 2. ドローンがそのパターンをサポートしていない、またはそのために設計されていない場合「偽のビルド」を制限するための最善の回避策

注: ビルドの開始時にサブフォルダーの変更をチェックし、何もない場合は緑色を返すことができます。これは推奨されるアプローチですか?

4

3 に答える 3

-1

1 つの制約があるため、Drone は特定のプロジェクト レイアウトを強制していると思います。

  • ドローンは次のイベントによってトリガーされます: プッシュ、プル リクエスト、タグ、デプロイ。すべてのトリガーは、リポジトリ レベルのイベントです。

次の 2 つの制約も重要ですが、この場合は決定要因ではありません。

  • 1 つのリポジトリ、1.drone.ymlつのパイプライン
  • .drone.ymlプロジェクトルートにある必要があります

複数のプロジェクトを含む 1 つのリポジトリがある場合、構造に関係なく、更新中の特定のアセットに基づいてビルド パイプラインをトリガーすることはできません。

大きなマルチモジュール プロジェクトがあり、各プッシュでプロジェクト全体をビルドしたくない場合、最善の方法は、プロジェクトをリファクタリングして、各モジュールを独自のリポジトリに配置し、Drone パイプラインを構成してダウンストリーム/アップストリーム ビルドをトリガーすることです。必要に応じて依存関係/依存関係について。

于 2017-06-14T15:28:43.523 に答える