web-dev-qa-db-ja.com

githubアクションを使用してmonorepoから個々のサービスをデプロイします

私は約10の個別のマイクロサービスを持っています。これらはほとんどがさまざまなデータ処理ジョブのクラウド機能であり、すべて単一のgithubリポジトリにあります。

目標は、ブランチへのプッシュ時に、個々の関数が更新されたときに、これらのサービスをGoogle Cloud Functionsに選択的にデプロイすることをトリガーすることです。

単一のサービスの更新によってすべてのクラウド機能がデプロイされる状況を回避する必要があります。

私の現在のリポジトリ構造:

/repo
--/service_A
----/function
----/notebook
--/service_B
----/function
----/notebook

余談ですが、そのような自動化のためにGithubアクションVS Google Cloud Buildを使用することの長所/短所は何ですか?

5
dendog

いくつかのスクリプトを実行して、git diffに基づいて変更されたサービスを検出し、 GitHub REST API を介して対応するジョブをトリガーすることもできます。

2つのワークフローmain.ymlservices.ymlが考えられます。

メインワークフローは、常にPushで開始されるように構成され、変更されたサービスを見つけるためのスクリプトを開始するだけです。変更されたサービスごとに リポジトリディスパッチイベント がペイロードのサービス名でトリガーされます。

サービスワークフローrepository_dispatch で開始するように構成され、サービスごとに1つのジョブが含まれます。ジョブには、イベントペイロードに基づいて追加の条件があります。

同様の設定のショーケースを参照してください: https://github.com/zladovan/monorepo

0
Ján Čabala