web-dev-qa-db-ja.com

Azure DevOps:1つのソリューションの複数のプロジェクトCI / CD

CI/CDでAzure DevOpsの設定を開始しました。これは不可能かもしれませんが、答えを見つけたいと思います。

私は6つのプロジェクトを持つソリューションを持っています:

  • Web Apiプロジェクト(インフラストラクチャ、リポジトリ、モデルプロジェクトを参照)
  • Websiteプロジェクト(データのWeb APIを呼び出し、インフラストラクチャ、リポジトリ、モデルプロジェクトを参照します)
  • Node.jsプロジェクト(データのWeb APIのみを呼び出します)
  • インフラストラクチャプロジェクト(Web APIとWebサイトで共有)
  • Repositoriesプロジェクト(Web APIとWebサイトで共有)
  • Modelsプロジェクト(Web APIとWebサイトで共有)

CI/CD定義内の独自のAzure App ServiceにWeb API、Webサイト、およびNode.jsプロジェクトを公開する方法について検索する前に、次のことを行います。

特定のプロジェクトのみがデプロイされるように設定することは可能ですか?つまり、Node.jsプロジェクトは公開されているか、Web APIとWebサイトのみが公開されていますが、Node.jsは公開されていません。

または、別のソリューションで物事を維持する必要がありますか?

それらを別々のソリューションで保持している場合、ソース管理(Git)に関して、共有プロジェクト(インフラストラクチャ、リポジトリ、モデル)にどのような影響がありますか? Web Apiソリューションのモデルとリポジトリにコードを追加した場合、Web Api Gitリポジトリではなくこれらの変更をコミットしますか?これは、同じモデルおよびリポジトリプロジェクトを参照する他のプロジェクトにどのように影響しますか?これはGitサブモジュールが登場する場所ですか?

更新1(2019/3/8)

Path filtershttps://docs.Microsoft.com/en)を使用して1つのソリューションでこれを機能させることができるようです-us/Azure/devops/pipelines/build/triggers?view = Azure-devops )。さらなる入力にまだ興味があります。

10
RoLYroLLs

これが他の人に役立つことを願っています:

Build定義でPath filtersを使用してこれを解決しましたが、問題なく動作します。私は、プロジェクトごとに1つのビルド定義を作成しました。これは、どこかでライブまたはホストする必要がある(私の例では、3つのBuild定義:Web Api、Webサイト、Node.js)。

Path filterでプロジェクトへの適切なパスを使用すると、適切なBuildsのみがスピンアップし、変更されていないプロジェクトはビルドをトリガーしません。各ビルドには独自のreleaseがあり、指定されたアプリを独自の宛先にデプロイします。

9
RoLYroLLs

私があなたの質問をよく理解しているかどうかを確認してください、特定のビルドパーツをデプロイする必要がありますはい、Azure DevOpsでこれを行うことができます。 Azure DevOpsには、ビルド定義とリリースパイプラインがあります。ビルドでは、プロジェクトをビルドして、言及した2つのコンポーネントだけを公開し、リリースではそれらをデプロイします。

1
Mohamed Amr