問題タブ [azure-devops-server-2020]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure-devops - Azure Devops Server 2020 Update 1.1 のマーケットプレース拡張機能をインストールできない
DevOps Server 2020 Update 1.1 に拡張機能をインストールしようとすると、次の問題が発生しました。ユーザーは既にプロジェクト コレクションの管理権限を持っており、この問題のトラブルシューティングに役立つ情報が見つかりませんでした。a
このジョブ監視履歴も見つかりました http:///tfs/_oi/_jobmonitoring?_a=history
[3800771] チーム ファウンデーション:公開拡張機能: bleddynrichards.Assembly-Info-Task 結果: 失敗しました 優先度: 10 キューに入れられた理由: キューに入れられました ホスト: TEAM FOUNDATION ジョブ名: 公開拡張機能: bleddynrichards.Assembly-Info-Task エージェント: [CMA-DEVOPS] w3wp.exe キュー時間: 2021 年 10 月 31 日日曜日 9:36 AM キュー時間: 0:00:00.323 開始時間: 2021 年 10 月 31 日日曜日 9:36 AM 実行時間: 0:00:00.42 終了時間: 日曜日、 2021 年 10 月 31 日 9:36 AM 結果メッセージ: 拡張機能の公開に失敗しました: 要求の送信中にエラーが発生しました。ホスト ID: cce5c55f-cc2e-44ae-916d-2007a20a0c06 ジョブ ID: f864fc6d-c68d-4a16-8d6f-2e2fa7cb6366 エージェント ID: 130d9572-9810-4b6a-adb7-7adef51ce33a
azure-devops - Azure DevOps オンプレミス パイプライン タスクを更新して、MSBuild v17 と Visual Studio 2022 を含めるにはどうすればよいですか?
オンプレミスの Azure Devops パイプライン タスクを更新して、新しい MSBuild v17 および Visual Studio 2022 ビルド タスクを含めるにはどうすればよいですか?
ここで更新された MSBuild タスクを見つけました:
https://github.com/microsoft/azure-pipelines-tasks/tree/master/Tasks/MSBuildV1
ここにインストールされている古い MSBuild v16 タスクを見つけました:
C:\Program Files\Azure DevOps Server 2020\Tools\Deploy\TfsServicingFiles\Tasks\Individual\MSBuildV1\
これを更新する適切な方法は何ですか?
azure-devops - 単一の YAML ビルドで異なるジョブを順次同期する方法は?
Azure DevOps Server 2020 (オンプレミス) を使用しています。
根拠
私たちの PR ビルドはビルドに時間がかかります。msbuild/m:4
フラグを使用すると、クリーンからビルドするのに約 45 分かかります。パイプラインは、テストの目的で、ビルドの前に出力をクリーンアップして git clean を実行するように構成されています。
(実際の PR ビルドは出力を消去するだけで、リポジトリは消去しません)
maxCpuCount
msbuildパラメーターと、同じビルド サーバーで実行できる同時 PR ビルドの数 (つまり、ビルド エージェントの数)の最適な組み合わせを見つけようとしています。
誰も使用していない専用のビルド サーバーがあり、6 つのエージェントを構成しています。This is my Subject U nder Test . 次に、 REST API を使用して SUT でビルドをキューに入れる別のビルド サーバーでドライバー ビルドを実行します。
PR ビルドを任意の値でキューに入れることを知っていますmaxCpuCount
。問題は、同時ビルドをキューに入れる方法です。表面的には、同じ REST API を実行するだけで、SUT プールで次に使用可能なエージェントがそれを取得して実行します。ただし、ドライバー ビルドは進行状況の情報も出力します。実際には 1 つのビルドをキューに入れるわけではありませんが、前のビルドが完了するのを待っている間 (REST API を使用)、N ビルドを次々と実行します。失敗したビルドの後にクリーンアップして再起動するなど... ドライバー ビルド出力は、同じドライバー ビルドのトラブルシューティングに使用されます (これはコードであり、バグの対象となります)。
そのため、複数の Powershell ジョブ、PS 実行空間、またはスレッドを実行するオプションを削除しました。それらを組み合わせた出力を理解することは非常に問題になるからです。
代わりに、ドライバー ビルド自体の中で複数のジョブを定義することにしました。したがって、5 つのドライバー ビルド ジョブが同時に実行される場合、SUT 上で 5 つの PR ビルドを同時に実行していることになります。
最後に、そもそもなぜドライバーをビルドするのでしょうか? コンソールスクリプトを長時間実行しないのはなぜですか? いくつかの理由:
- デスクトップ マシンが夜間に頻繁に再起動される
- サーバー マシンは 15 分間、アクティビティがなくてもログアウトします。マウス ジガー ツールをインストールしたくありませんでした。許可されているかどうかわかりません。
- ドライバー コードを Windows サービスまたはスケジュールされたタスクとして配置しても、その進行状況を Azure DevOps と同じレベルで監視することはできません。
質問
私のテストには 2 つの側面があります。
- Max Degree of Parallelism または MaxDOP - msbuild
maxCpuCount
パラメーターにマップします - Agent Count - テストに参加した SUT ビルド エージェントの数
私が設計した方法 (上記で説明) により、エージェント カウントは、ドライバー ビルド内で同時に実行されているジョブの数を定義します。
次のテスト マトリックスを実装したいと考えています。
たとえば、 の場合MaxDOP = 3 and AgentCount = 5
、SUT で 5 つの PR ビルドをキューに入れます/m:3
。合計で 6 つのエージェントがあるということは、これら 5 つの PR ビルドが同時に実行されることを意味します。
4 >= MaxDOP >= 1
そして、 と のすべての組み合わせに対してそれを行いたい3 <= AgentCount <= 6
そこで、次のドライバー ビルドを思いつきました。
課題は、ジョブを同期することです。MaxDOP
これは、異なる値を持つジョブを同時に実行したくないためです。たとえば、次のジョブを取り上げますMaxDOP_3x4_Agents
。
- 最大DOP = 3
- エージェント数 = 4
- MaxDOP_4x4_Agents の後に実行する必要があります
そしてもちろん:
- 最初のジョブはジョブ
MaxDOP_4x3_Agents
の後に実行する必要がありますPrepare
Cleanup
ジョブは最後のジョブの後に実行する必要がありますMaxDOP_1x6_Agents
16 個のテスト マトリックス セルすべてを明示的にコーディングせずに、このセマンティクスを表現する方法を見つけることができませんでした。要件を無視するdependsOn
と、2 つの入れ子になったfor
ループが非常に簡単に機能します。
残念ながら、ここで指定する方法がわかりませんdependsOn
。
ドライバー ビルドのいくつかのスナップショット (期間は無視してください。現在はドライ ランであり、SUT での実際の PR ビルドは呼び出されません)。
小さなテスト マトリックスの使用: