私は約10の個別のマイクロサービスを持っています。これらはほとんどがさまざまなデータ処理ジョブのクラウド機能であり、すべて単一のgithubリポジトリにあります。
目標は、ブランチへのプッシュ時に、個々の関数が更新されたときに、これらのサービスをGoogle Cloud Functionsに選択的にデプロイすることをトリガーすることです。
単一のサービスの更新によってすべてのクラウド機能がデプロイされる状況を回避する必要があります。
私の現在のリポジトリ構造:
/repo
--/service_A
----/function
----/notebook
--/service_B
----/function
----/notebook
余談ですが、そのような自動化のためにGithubアクションVS Google Cloud Buildを使用することの長所/短所は何ですか?
いくつかのスクリプトを実行して、git diff
に基づいて変更されたサービスを検出し、 GitHub REST API を介して対応するジョブをトリガーすることもできます。
2つのワークフローmain.yml
とservices.yml
が考えられます。
メインワークフローは、常にPushで開始されるように構成され、変更されたサービスを見つけるためのスクリプトを開始するだけです。変更されたサービスごとに リポジトリディスパッチイベント がペイロードのサービス名でトリガーされます。
サービスワークフローは repository_dispatch で開始するように構成され、サービスごとに1つのジョブが含まれます。ジョブには、イベントペイロードに基づいて追加の条件があります。
同様の設定のショーケースを参照してください: https://github.com/zladovan/monorepo