私が取り組んでいる製品は、3/4 の独立した (依存しない) TFS ビルドで構成されています。
ProcessTemplate 内から他の 3/4 ビルドをキューに入れる単一の TFS ビルドを作成し、重要なことに、それらにプロセス パラメーターを渡したいと思います。このビルドは、それらすべてが完了するまで待機し、ビルドの全体的な成功/失敗を返します。
だから私の質問は:
- これは、既存の「標準」ワークフロー アクティビティで達成できますか (私のマネージャーはカスタム ワークフロー アクティビティで悪い経験をしました)?
- そうでない場合は、powershell に「シェルアウト」できます。Powershell 内から (API にアクセスして) 目的を達成できますか?
- おそらくTFSBuild.exeを使用していますか?しかし、必要なカスタム プロセス パラメータを渡す方法が見つかりません。
任意の支援やガイダンスをいただければ幸いです。
更新 次のpowershellスクリプトはビルドを実行しますが、カスタムプロセスパラメーターを渡すことができるかどうかまだ途方に暮れています:-(
function Get-BuildServer
{
param($serverName = $(throw 'please specify a TFS server name'))
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName ("Microsoft.TeamFoundation.Build.Client")
$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($serverName)
return $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
}
$buildserver = Get-BuildServer "http://tfsserver:8080/tfs/My%20Project%20Collection"
$teamProject = "ESI"
$buildDefinition = "iPrl_BuildMaster"
$definition = $buildserver.GetBuildDefinition($teamProject, $buildDefinition)
$request = $definition.CreateBuildRequest()
$buildserver.QueueBuild($request, "None")
グーグルで調べたところ、冗長性を更新する次の C# コードが見つかりました。カスタム プロセス パラメータも同じであると仮定すると、これを上記の PowerShell スクリプトで動作するように変換する必要があります。何か案は?
IDictionary<String, Object> paramValues = WorkflowHelpers.DeserializeProcessParameters(processParameters);
paramValues[ProcessParameterMetadata.StandardParameterNames.Verbosity] = buildVerbosity;
return WorkflowHelpers.SerializeProcessParameters(paramValues);