web-dev-qa-db-ja.com

nugetパッケージ用のAzure DevOps CIビルド/リリースパイプラインをセットアップする方法(上級)

会社として、Azure DevOpsのさまざまなgitリポジトリからNuGetパッケージを作成しています。パッケージをテストして承認したら、Azure DevOps組織内で共有する必要があります。

Azure DevOpsフィードを使用して、ビルド/リリースパイプラインのセットアップにまだ苦労しています。パッケージは、組織で共有する前に、まずテストに使用できるようにする必要があります。

マイクロソフトには多くの推奨事項とベストプラクティスが共有されていますが、実行可能な解決策はまだ見つかりません。これまでに試した解決策を説明します。

ソリューションA

組織全体で1つのフィードを使用します。テストが完了すると、パッケージは自動的に@localフィードにプッシュされ、@ prereleaseビューと@releaseビューにプッシュされます。パイプラインは次のように使用されます。

  • Git-flowに従って、develop、feature、およびmasterブランチを操作します。
  • CIビルドは開発ブランチでトリガーされます
  • プレリリースサフィックスが付いたパッケージが@localフィードにプッシュされます。
  • 受け入れテストは、Visual Studio内のNuGetパッケージマネージャーでプレリリースチェックボックスを有効にすることにより、他のツールで行われます。
  • パッケージが受け入れられると、リリースが作成され、新しいビルドがトリガーされます。
  • パッケージがプッシュされます

問題ソリューションA:

  • パッケージが受け入れられると、@ releaseビューに昇格する必要がありますが、パッケージ名にはまだ-preサフィックスが含まれています。
  • パッケージが受け入れられたとき、リリースブランチからこれを実行できない限り、私の意見では新しいビルドは必要ありませんか?
  • パッケージは接頭辞が付いたVisual Studioでのみ表示されますが、接尾辞を使用して@releaseビューにプッシュできます。
  • パッケージがプロモートされるときは、サフィックスなしでコピーして保存する必要があります。

ソリューションB

各gitリポジトリ専用のフィード(Microsoft推奨)を使用し、CIビルドからこのフィードにNuGetパッケージを公開します。各パッケージは、サフィックスなしで@localフィードに送信されます。パッケージがテストされ受け入れられると、パッケージは@releaseビューに昇格します。各専用フィードはアップストリームソース(@リリースビュー)として構成され、リリースビューのパッケージは、すべての開発チーム間で組織内で共有される共通フィードに「キャッシュ」されます。

問題ソリューションB:

  • 上流のソースを介して表示されるようになるパッケージは、単一のデプロイ/ビルドが完了した後にのみ追加/キャッシュされます。パッケージが@releaseビューに昇格された場合、これを強制することはできません。
  • パッケージの最新バージョンをインストールするには、すべての開発チームがVisual StudioですべてのNuGetフィードを購読する必要があります。 (30 gitリポジトリ= 30フィード)

一般的な質問:

  • NuGetパッケージを作成するだけでgit-flowは機能しますか?
  • プレリリースパッケージを使用するか、サフィックスなしで@ pre-releaseビューに保持する必要がありますか?
  • 接尾辞のないパッケージを作成するために新しいビルドを開始するのは間違っています。プレリリースパッケージがテストされると、リリースビューにのみ昇格する必要があります。
  • CIビルドでパッケージをビルドし、リリースビルドを使用してパッケージをリリースする必要があります。 PowerShellを環境変数と共に使用して、パッケージをあるリリースから別のリリースに昇格させる人を見てきました。

たくさんの質問があることは承知していますが、この問題でかなり長い間苦労しています。誰かが私にいくつかの良い提案を提供できることを願っています。

ありがとう!

18
wilkokosten

私がやっていることは、ビルドパイプラインで、プレリリースとリリースパッケージをビルドし、両方をアーティファクトに保存します。

私のリリースパイプラインでは、プレリリースパッケージをローカルキャッシュに公開しています。UATの準備ができたら、UATへのリリースを承認し、これによりプレリリースパッケージとして公開します。 UATが完了すると、リリースパッケージを公開するリリース間のリリースが承認されます。

1
James Thompson