UGSのCISバッジをつけるPostBadgeStatus.exeがHordeだと動作しない

お世話になっております。

一応ローカルでは解決しているのですが、情報共有のため投稿します。

UGSのCISバッジをつけるPostBadgeStatus.exeなのですが、Hordeサーバーですと動作しませんでした。

https://dev.epicgames.com/documentation/unreal-engine/unreal-game-sync-reference-guide-for-unreal-engine#postbadgestatus

UE5.8のEngine/Source/Programs/UnrealGameSync/PostBadgeStatus/で確認したのですが、こちらIISのMetaDataServer専用でHordeには使用できないのでしょうか?

HordeですとPostBadgeStatus/Program.csに実装されているエンドポイントのパスから違っているようでした。

  • IIS … /api/Build
  • Horde … /ugs/api/metadata

また、http://my_horde:13340/swagger のHorde Server APIを見ると

/ugs/api/metadataにバッジ情報があることはわかったのですが、

/ugs/api/metadata
 
{
 "sequenceNumber": 0,
 "items": [
  {
   "change": 0,
   "project": "string",
   "users": [
    {
     "user": "string",
     "syncTime": 0,
     "vote": "None",
     "comment": "string",
     "investigating": true,
     "starred": true
    }
   ],
   "badges": [
    {
     "name": "string",
     "url": "string",
     "state": "Starting"
    }
   ]
  }
 ]
}

ここのアクセスするパラメーターは以下のような仕様でした。

  • streamはバーチャルストリームのパスではなく、実体のストリームのパス、最後のスラッシュはつけない
  • projectはstreamのパスを削ったパスでフォルダのパスまで(これは昔の仕様と同じ)、前後のスラッシュは削る

//depot/stream_root/projects/myproj/myproj.uprojectの場合は

{
 "stream": "//depot/stream_root",
 "change": 1234,
 "project": "projects/myproj",
 "badges": [
  {
   "name": "Test",
   "url": "http://job_url/",
   "state": "Success"
  }
 ]
}

とりあえずこれでうまく入ったのですが、

Epic様の方ではどういう形でCISバッジを更新されていますか?

https://dev.epicgames.com/documentation/unreal-engine/horde-unrealgamesync-tutorial-for-unreal-engine#badges

ここを見るとHordeのオートメーションではlabelがバッジ扱いということなので、全てHordeのオートメーションのみで完結されているのでしょうか?(外部ツールなどの場合はcurlやInvoke-RestMethodで直接送信しているのでしょうか?)

よろしくお願いいたします。

[Attachment Removed]

​

お世話になっております。

​

調査ありがとうございます。こちらでも5.8のソースを見てみました。

​

PostBadgeStatusですが、送信先が/api/Buildで固定になっている上に、送るデータにstreamに当たる項目がそもそもないんですよね。なので旧MetadataServer専用と考えていただいて問題ないと思います。Horde側にも代わりのエンドポイントは見当たりませんでした。パラメーターの解釈も、確認した限りでは合っていました。

​

弊社の場合はBuildGraphの<Label>にUgsBadgeを付けて、あとはHordeに任せる形が基本です。外部ツールから入れる時は、まさに今回やられたように/ugs/api/metadataに直接投げています。

​

もし<Label>を試されてバッジが出なかった、ということでしたら、ジョブテンプレートのshowUgsBadgesが有効になっているか一度見ていただけますか。ここがfalseだと何をしても出ない上に、デフォルトがfalseなので結構ハマりやすいところです。あとpreflightのジョブは対象外になっているので、そちらで検証されていた場合も同じことが起きます。

​

ドキュメントにHorde非対応と書いていないのは分かりにくいので、改善要望として上げておきます。

​

お手数ですが、よろしくお願いします。

[Attachment Removed]

お世話になっております。​

情報ありがとうございます。

現状はまだJenkinsを使用している状態ですので、CISバッジは直接POSTを投げて更新するようにしておきます。

Hordeのオートメーションも自動テストで使用することになると思うのでその時は<Label>を使用してみますね(showUgsBadgesとpreflightの情報もありがとうございます)。

ありがとうございました。

[Attachment Removed]