Search Unity

Unity Build Serverクイックスタートガイド

<このページで学べる内容>

Unity Build Serverは、バッチモードでビルドだけが実行できるように設計し、かつ、フローティングライセンスで運用できるようにしながら、機能を制限した分だけお得にご利用できるサービスです。 CI環境で専用のビルドマシンを複数台運用している方におすすめします。 ビルドマシンでUnity Build Serverライセンスを使用するためには、ライセンスを発行する、独自のライセンスサーバーを用意する必要があります。 このガイドでは、そのライセンスサーバーの設定を行います。

始める前に

Build Server の試用版が必要な場合は、こちらに問い合わせください。Build Server用のライセンスを取得したら、ライセンスサーバーをセットアップする準備ができます。始める前に、UnityIDポータルから必要なものをダウンロードします。ポータルにログインし、「組織」をクリックして組織を選択し、「ライセンスサーバー」をクリックします。

このページから、「Download New Server」をクリックして、サーバーのソースアーカイブを取得します。 サーバーを設定するための最新のドキュメントをダウンロードすることもできます。

重要: 構成ファイルが破損した場合、すべての構成ファイルを復元できない場合があります。Unity Licensing Serverが正常に実行されたら、サーバーが使用できなくなった場合にサーバーを復元できるように、構成ファイルをバックアップすることが重要です。設定ファイルをバックアップする方法については、Unity Floating License Setup Guideの「Backing up the server configuration」セクションを参照してください。

- サーバー要件

Unity Licensing Serverには、次のプラットフォームのいずれかを実行する専用マシンが必要です。

  • Windows: Windows 10, Windows Server 2012, Windows Server 2016 (64bit版)
  • Linux: Ubuntu 16.04以降, Red Hat Enterprise Linux 7.x, CentOS 7.x (64bit版)

Windowsプラットフォームでは、Windows PowerShellでコマンドを実行します。 Linuxプラットフォームでは、Linuxターミナルを使用します。

- ビルドマシン要件

ビルドマシンにはUnity Editorのバージョン2019.4.3 LTS以降が必要です。

- バージョン

この日本語ドキュメントは、2020年12月2日に更新されたバージョンv1.8.0を元にしています。

1. サーバーファイルの展開

Unity Licensing Serverをセットアップするには、Unity.Licensing.Serverアーカイブの内容を専用サーバーマシンの任意のディレクトリ内に展開します。これは、ライセンスサーバーの起動ディレクトリになります。

プラットフォームサーバー推奨パス
WindowsC:¥UnityLicensingServer
Linux~/UnityLicensingServer

2. サーバーのコンフィグレーション

ライセンスサーバーを設定するには、サーバーファイルを含むディレクトリに移動します。コンソールまたはターミナルから次のコマンドを実行し、プロンプトに従ってコンフィグレーションを完了します。

プラットフォームセットアップコマンド
Windows.¥Unity.Licensing.Server.exe setup
Linux./Unity.Licensing.Server setup

セットアップのプロセスでは以下の設定も行います:

  • サーバー名
  • HTTPS/SSL(任意)
  • 使用するNICとポート
  • 管理者アカウントのアクセスIPアドレス(ホワイトリスト登録)

サーバー設定を行うと、作業ディレクトリ内にservices-config.jsonとserver-registration-request.xmlの2つのファイルを生成します。

{
  "licensingServiceBaseUrl": "http://192.168.0.31:8888",
  "enableEntitlementLicensing": true,
  "enableFloatingApi": true,
  "clientConnectTimeoutSec": 5,
  "clientHandshakeTimeoutSec": 10
}
services-conxfig.json
<?xml version="1.0" encoding="utf-8"?>
<ServerRegistrationRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ServerId>TestBuildServer</ServerId>
  <Context>
    <Identifiers>
      <Identifier Type="FirstPhysicalAddress" Id="XX:XX:XX:XX:XX:XX" />
      <Identifier Type="Platform" Id="Win32NT" />
      <Identifier Type="ProcessorCount" Id="8" />
      <Identifier Type="MachineName" Id="DESKTOP" />
    </Identifiers>
  </Context>
  <DelegatedKey>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==</DelegatedKey>
</ServerRegistrationRequest>
server-registration-request.xml

これらのファイルに含まれるパラメータの詳細は、Unity Floating License Setup Guideの[Configuring the licensing server]を参照してください。

注:server-registration-request.xml内の"FirstPhysicalAddress"フィールドは、ライセンスサーバマシンの識別に使用されます。設定で選択したものと異なる場合もあります。

3. サーバー登録

server-registration-request.xmlには、マシン結合情報が含まれています。UnityIDポータルのライセンスサーバーページの”Upload Server Registration”ボタンをクリックし、ファイルをアップロードして登録します。UnityIDポータルの画面の指示に従ってシートを割り当て、ライセンスアーカイブをダウンロードします。

4. ライセンスアーカイブのインポート

ライセンスアーカイブは UnityIDポータルのライセンスサーバーページから .zip形式でダウンロードすることができます。コンソールまたはターミナルで以下のコマンドを実行してインポートしてください。

プラットフォームインポートコマンド
Windows.¥Unity.Licensing.Server.exe import [ライセンスアーカイブのパス]
Linux./Unity.Licensing.Server import [ライセンスアーカイブのパス]

これでライセンスサーバーが設定されます。次の手順に進んで、サーバーの実行およびテストを行ってください。

5. ライセンスサーバーのテスト

サーバーを起動するには、サーバーファイルを展開したディレクトリに移動して、次のコマンドを実行します。

プラットフォームサーバー起動コマンド
Windows.¥Unity.Licensing.Server.exe
Linux./Unity.Licensing.Server
PS C:\UnityLicensingServer> .\Unity.Licensing.Server.exe

Server Version: 1.6.0.19b28b6
Successfully started the licensing server: http://192.168.1.30:8080/v1/admin/status
Press Ctrl+C to shut down...
出力例

サーバーが実行されているかどうかをテストするには、サーバー起動時の出力から得られた管理者APIのURLをコピーして任意のウェブブラウザーのアドレスバーにペーストしてアクセスします。

サーバーが使用できるようにすべての設定が適切であれば、

"status":"Healthy"

と表示されます。

6. ライセンスサーバーを実行するためのサービスを作成する

ライセンスサーバーをサービスとして実行し、起動時に自動的に起動するには、次のコマンドを管理者権限で実行して、出力される指示に従ってください。

注:Windowsプラットフォームでは、サービスを実行するユーザーに「サービスとしてログオン」権限が割り当てられている必要があります。詳細については、 Unity Floating License Setup Guide の「Setting up a service for the licensing server」セクションを参照してください。

プラットフォーム設定用コマンド
Windows.\Unity.Licensing.Server.exe create-service
Linuxsudo ./Unity.Licensing.Server create-service

これでサービスが作成され、起動します。

7. クライアントの設定

services-config.jsonファイルは、Unityエディター(Unity.Licensing.Client)がフローティングライセンスサーバーと通信するための設定ファイルです。(このファイルは手順2で自動的に生成されたものです)

services-config.jsonをすべてのクライアント端末の次のパスにコピーします。

プラットフォームサービス設定パス
Windows%PROGRAMDATA%¥Unity¥config¥
macOS/Library/Application Support/Unity/config/
Linux/usr/share/unity3d/config/

Unity Editorの起動時にこのファイルを使用して新しいライセンスを取得し、終了時にライセンスを返却します。

注:Macの場合は、/Users/xxx/Library/Application Support/Unity/config/ではなく、/Library/Application Support/Unity/config/にファイルを配置してください。

ライセンスサーバーの更新手続き

Unity Build Serverライセンス更新の手順については、 こちら の記事をご覧ください。

トラブルシューティング

Unity Floating License Setup Guideの「Troubleshooting(Server)」と「Troubleshooting(Client)」には、ログの場所や、Unity エディタを使用せずにライセンスの取得、返却をテストする方法についての詳細な情報が記載されています。

以下に、追加のヒントをいくつか紹介します。

- 便利なAPIコール

ライセンス サーバーには、トラブルシューティングに役立つJSON形式のデータを出力するいくつかのAPIが提供されています。アクセスするには、「Unity.Licensing.Server setup」コマンドを実行する際に、お使いのコンピュータが「Admin IP Whitelist」に追加されていることをまず確認してください。

Whitelistに登録すれば、ブラウザからcurlなどを使用してAPIを呼び出すことができます。

http://SERVER-IP-ADDRESS:PORT/v1/admin/status
ライセンス サーバーのステータスに関する基本情報を表示します。
http://SERVER-IP-ADDRESS:PORT/v1/admin/lease
現在使用中のライセンスの状態に関する情報を表示します。何も使用されていない場合は "[]" を表示します。
http://SERVER-IP-ADDRESS:PORT/v1/admin/audit/usage/license/floating?rangeStart=2023-01-01T00:00&rangeEnd=2024-12-31T23:59
指定した日付の範囲内でライセンスが取得され、返却された時期の情報が表示されます。

- 既存のマシンに適用しているライセンスからUnity Build Serverライセンスに切り替える方法

Build Serverを検証する際にBuild Serverライセンスと別のUnityライセンスを切り替えることは可能です。

ただし、Build Serverライセンスを使用している間は UnityエディターのUIを開くことはできなくなりますのでご注意ください。

1)既存のUnityライセンスを一時的に移動する

既存のUnity_lic.ulfファイルを誤って破損しないようにするために、一時的にデスクトップやテンポラリのフォルダなどに移動します。Unity_lic.ulfは下記のフォルダーにあります。

プラットフォームフォルダー
Windows%PROGRAMDATA%\Unity
macOS/Library/Application Support/Unity/

config/services-config.jsonが存在する場合は、そのファイルも移動してください。

例えば、Unity_lic.ulfをaaaUnity_lic.ulfに変更し、configフォルダーの名前をaaaconfigに変更します。

この状態で Unity Hubを起動しようとすると、「You have no valid license」というエラーが表示され、Unityエディターを開くことができなくなります。

UnityのCLIを使用してビルドを作成し、ライセンスの認証に失敗する確認もできます。

"C:\Program Files\Unity\Hub\Editor\2019.4.16f1\Editor\Unity.exe" -quit -batchmode -projectPath "C:\Users\UserName\Documents\MyProject" -buildWindows64Player "C:\Users\UserName\Documents\MyProject\MyProject.app"
Windows実行コマンド(例)
/Applications/Unity/Hub/Editor/2019.4.16f1/Unity.app/Contents/MacOS/Unity -quit -batchmode -projectPath ~/UnityProjects/MyProject -buildOSXUniversalPlayer ~/UnityProjects/MyProject/MyProject.app
macOS実行コマンド(例)

この例はUnity Editorバージョン2019.4.16f1の場合です。UnityのCLIの詳細情報はコマンドライン引数を参照してください。

ビルドが失敗となり、Unity Editorのログにエラーメッセージが表示されます。

Cancelling DisplayDialog: Failed to activate/update license Missing or bad username or password. Please try again using valid credentials or contact support@unity3d.com

2)Build Serverのconfigファイルを追加

config/services-config.jsonを正しい場所に配置します。

1と同じコマンドを実行するとビルドが成功します。

ただし、Build ServerのライセンスではUIモードは利用できないので、この状態では Unityエディターを開くことはできません。

3)元のライセンスを戻し、Build Serverのライセンスを削除

Build Serverのテストが終了し、通常のマシンライセンスに戻したい場合は、Unity_lic.ulfを元の場所に戻します。

また、config/services-config.jsonも移動または削除します。

Unity HubとUnityエディターがテストの前と同じ状態に戻ります。

- ビルドせずにライセンスを取得する方法

エディタに同梱されているUnity.Licensing.Clientを使えば、ビルドをしなくてもライセンスを取得することができます。

Unity.Licensing.Clientはこちらからアクセスします。

プラットフォーム場所
WindowsC:\Program Files\Unity\Hub\Editor\[VERSION]\Editor\Data\Resources\Licensing\Client\Unity.Licensing.Client.exe
macOS/Applications/Unity/Hub/Editor/[VERSION]/Unity.app/Contents/Frameworks/UnityLicensingClient.app/Contents/Resources/Unity.Licensing.Client
Unity.Licensing.Client --acquire-floating
UnityのCLIと同じようにライセンスサーバーからライセンスを取得する
Unity.Licensing.Client --return-floating [TOKEN]
ライセンスを返す

詳しくはUnity Floating License Setup Guideの[Client Configuration]を参照してください。

共通の問題

ビルドマシンがライセンスを取得できない場合、よくある確認箇所をご紹介します。

- services-config.jsonファイルは正しい場所にありますか?

Macの場合は”/Users/xxx/Library/Application Support/Unity/config/” ではなく、

/Library/Application Support/Unity/config/

にあることを確認してください。

- 使われていないフローティングライセンスがありますか?

同時にビルドできるのは、ライセンスを持っているマシンの数だけです。例えば、3つのフローティングライセンスを持っている場合、最大でも3台のマシンで同時にビルドできることになります。

- ライセンスをリリースしていないビルドマシンはありませんか?

どれかのビルドマシンが動作を停止し、ライセンスの返却に失敗した可能性があります。この種の問題をトラブルシューティングするには、licensing-server-config.jsonの"floatingLicenseExpirationInMinutes"および"floatingLeaseRenewIntervalInMinutes"の値を短くすると便利です。

ライセンスに何が起こったのかをトラブルシューティングする場合、利用可能なライセンスの状態をトラブルシューティングするために、admin/lease および admin/audit/useage/license/floating API を使用すると便利です。

- (Linuxのみ) 正しいユーザー権限でサーバーをセットアップしましたか?

サーバーのセットアップは、以下のコマンドでサーバーのセットアップします。

Unity.Licensing.Server setup

例えば、管理者権限(sudo Unity.Licensing.Server setup)でセットアップコマンドを実行すると、サーバーの実行やサービスの作成に問題が発生する可能性があります。

- tmpディレクトリにUnityの.sockファイルはありませんか?

ビルドする際に、/tmp/の下に.sockファイルが作成されますが、ビルドが正常に終わると削除されます。しかし、エディタ、もしくはライセンシングクライアントがクラッシュすると、.sockファイルが保持されてしまい、その後のエラーが発生する可能性がございます。

現在修正を行っている最中ですが、改善されるまで間、回避する方法がございます。

.sockファイルを見つけるには、ビルド実行中に以下のコマンドを実行します。

ls /tmp/*.sock

"Unity-LicenseClient-XXX.sock"のようなファイルが表示されます。

ビルドスクリプトにその.sockファイルを削除するステップを追加します。

rm /tmp/Unity-LicenseClient-XXX.sock

- まだ解決できない、どうしたらいいですか?

その他のトラブルシューティングヘルプについては、Unity Supportの[Floating Licenses と Build Servers]をご確認ください。それでも解決できない場合はお問い合わせフォームからご連絡ください。その際、以下のコマンドを実行し、ZIPファイルを添付に入れてください。

./Unity.Licensing.Server generate-report --output-directory [ディレクトリパス]

generate-reportコマンドは、以下のフォルダからログを取得します。

Windows
ログタイプパス
Unity Editor%LOCALAPPDATA%\Unity\Editor\
Licensing Logs (Client, Server, Audits)%LOCALAPPDATA%\Unity\
Unity Hub%APPDATA%\UnityHub\logs\
macOS
ログタイプパス
Unity Editor~/Library/Logs/Unity/
Licensing Logs (Client, Server, Audits)~/Library/Logs/Unity/
Unity Hub~/Library/Application\ Support/UnityHub/logs/
Linux
ログタイプパス
Unity Editor~/.config/unity3d/
Licensing Logs (Client, Server, Audits)~/.config/unity3d/Unity/
Unity Hub~/.config/UnityHub/logs/
この記事はいかがでしたか?