TFS CI ビルド プロセスで、IBM uDeploy コマンド ライン クライアント (udclient) への PowerShell スクリプト呼び出しをしばらく前から行っています。
私のudclient呼び出しは次のようにスクリプト化されています:
udclient.cmd -weburl $uDeployServer -authtoken $authToken "importVersions" $requestJson
... そして、私の JSON ファイル ($requestJson) の内容は次のようになります。
{
"component": "[uDeploy component name]",
"properties": {
"version": "[component version]"
}
}
これらのリクエスト、およびその後の udclient バージョンのデプロイ リクエストは、最近まで期待どおりに機能していました。しかし、数週間前に、バージョンのインポート リクエストが不思議なことに失敗し始めました。
uDeploy UI の [コンポーネント構成] の [バージョン インポート履歴] タブで、失敗したインポート リクエストを確認できます。
ただし、検査のために出力ログを開くと、空です。エラーログにはこれだけが含まれています:
「バージョンのインポートは次の理由で失敗しました: JSONObject["値"] が見つかりません。」
uDeploy UI からの手動バージョン インポートは、引き続き期待どおりに機能します。
また、CI ビルドでバージョンのインポートを完了するために手動の介入が適用されると、後続のバージョンのデプロイ リクエストは問題なく実行されます。
私は Java の専門家ではありませんが、エラーは JSON ファイルに問題があることを示唆しているように思えました。ただし、JSON をテストするには (PS 5 を使用しており、PS 6 までは Test-Json を使用していません)、次の PowerShell スクリプトを実行します。
try {
$json = Get-Content -Path [component version import].json | ConvertFrom-Json
Write-Host "JSON is valid."
} catch {
Write-Host "JSON is dodgy."
}
... 戻り値:
JSON は有効です。
どうしたの?JSONファイルのエンコーディングなどと関係があるのでしょうか?? アイデアと洞察を歓迎します。見てくれてありがとう。