Search Unity

Unity Build Server でプロジェクトのビルドの負荷を分散する

, 9月 25, 2020

Unity Build Server は、専用ハードウェアを使ってプロジェクトのビルドの負荷を分散する新しい手段です。これにより、大規模プロジェクトのビルドを行うスタジオで、チームの生産性を向上させることができます。

プロジェクトのビルドは、チームが Unity を選ぶときに最初に考えることではないかもしれませんが、プロジェクトの規模と複雑さが増してくると、プロジェクトのビルドをどのように処理するかが大きな問題になることがあります。開発の途中で、プロジェクトの更新スピードに追いつけるだけのスピードで、すべての関係者にテストのためのプロジェクトのビルドを供給できないことに気づき、これがフラストレーションとなることがあります。さらに悪い場合には、開発チームが自分のワークステーションを使ってプロジェクトをビルドしなければならなくなり、ビルドが完了するのを待っている間に生産性の高く保てる時間を浪費してしまうこともあります。

Unity Build Server を導入しよう

Unity Build Server は、バッチモードで Unity を実行して、Unity プロジェクトをビルドのみを行わせるタイプのライセンスです。これにより、開発者はプロジェクトのビルドにいつも使っているワークステーションを使用する必要がなくなり、マシンリソースを消費して他の作業のスピードを落とす必要がなくなります。また、より多くのチームメンバーが必要なときに、自分のペースでビルドを要求できるようになります。そのため、修正点を確認したり、ゲームプレイのアイデアをテストしたり、新しいビルドが別のターゲット プラットフォームで正しく動作するかどうかを確認したりするためにナイトリービルドを待つ必要もありません。

想定している利用者

Unity Pro および Unity Enterprise のサブスクリプションをご契約されている方は、Unity Build Server をご利用いただけます。Unity Pro をご利用の方は、アドオンパックとして取得できます。また、Unity Enterprise をご利用の方は、Unity Enterprise ライセンス数に応じた数の Build Server ライセンスを取得できます。加えて、Enterprise をご利用の方は、アドオンパックを通して Build Server ライセンスを必要に応じて追加することができます。すなわち、現在 Enterprise サブスクリプションをご契約されている方は、すぐに Build Server を使い始めることができるということです。

仕組み

Unity エディターのライセンスは、1 台のマシンで使用するノードロックライセンスと、フローティングライセンスのどちらもご利用いただけますが、Unity Build Server は常にフローティングライセンスで配布されます。Unity Build Server は、フローティングライセンスまたはノードロックの両方の Unity エディター構成で使用できます。フローティングライセンスの詳細については、販売代理店にお問い合わせいただくか、直接 Unity にお問い合わせください。

まず、Unity ID ポータルから Unity ライセンスサーバーをセットアップし、Unity Build Server ライセンスのフローティングプールを集中管理してスタジオのネットワークにローカルにデプロイする必要があります。Unity ライセンスサーバーは、ユーザーがプロジェクトのビルドを要求すると、オンデマンドで Build Server のライセンスを動的に提供することができます。ビルドプロセスが完了すると、ライセンスは自動的にプールに戻されます。

フローティングライセンスの柔軟性により、手動でライセンスを再割り当てすることなく、ネットワークハードウェアやデプロイメントターゲットをいつでも変更できます。また、Unity Build Server は、一般的な自動化システムや継続的インテグレーションシステムと組み合わせてセットアップすることができるため、既存のビルドパイプラインを妨げることなく、ビルドプロセスをより柔軟で統合的なものにすることができます。

Unity ID ポータル

Unity Build Server の利用を開始するには、Unity ID ポータルからライセンスサーバーをダウンロードします。ライセンスサーバーがターゲットサーバーから必要な情報を引き出すために、コマンドラインプロセスを介してセットアップに関するいくつかの質問に答える必要があります。生成されたサーバー登録ファイルが Unity ID ポータルにアップロードされ、そこで Unity Build Server ライセンスが生成され、ターゲットサーバーにデプロイして利用できるようになります。

導入事例 1:ローカルビルドファーム

Unity ライセンスサーバーは、スタジオ内の指定されたターゲットハードウェアに Unity Build Server のライセンスをデプロイし、プロジェクトのビルドを完了させます。ここでは、Unity ライセンスサーバーがユーザーにフローティング Unity エディターライセンスをデプロイしている様子を示しています。Unity Build Server は、ノードロックされた Unity エディターライセンスとフローティング Unity エディターライセンスで動作します。

導入事例 2:クラウドでのビルド実行

Unity ライセンスサーバーは、クラウドにデプロイされたバーチャルマシンなど、スタジオの外部にある指定されたターゲットハードウェアに Unity Build Server ライセンスをデプロイします。また、ここでは、Unity ライセンスサーバーがフローティング Unity エディターライセンスをユーザーにデプロイしています。Unity Build Server は、ノードロックされた Unity エディターライセンスとフローティング Unity エディターライセンスで動作します。

Unity Build Server の詳細については、製品紹介ページをご覧いただくか、弊社の営業チームにお問い合わせください。

14 replies on “Unity Build Server でプロジェクトのビルドの負荷を分散する”

> Unity Build Server is a license type

This is very confusing, why name it “Server” when it’s not a server. It’s best to name it Unity Build License, or Unity Build Server License

Could you provide more information on how the commandline calls change when using this mechanism?
I guess something has to change, as the product page states “Unity 2019.4.3 LTS or later” as required version and it also states that the license will be returned automatically after the build has finished, which was previously not possible.

If the calls can be reduced from “Get License -> Call Batchmode -> Return License” to one call, how does it handle crashes? How is the returning of the license ensured then?

I’m really interested in this product, especially because of the pricing aspect, but the current amount of readily available documentation is hampering my excitement quite a bit.

You configure the Unity install to use the floating license server with a config file, and once that is in place, acquiring and returning licenses is completely automatic – you don’t need to explicitly specify anything on the command line.

The licenses are ‘leased’ from the license server, so if the Editor doesn’t exit cleanly, then after a (configurable) time the lease will expire and the license server will allow granting it to another machine. You can also manually revoke the lease, either from the client or from the licensing server.

This is good news, but I wish you could buy a single license. We’re a small studio that only has (and needs) two build machines and this penalises us.

Naming build server a license is very confusing. I entered expecting a ready to go solution to deploy and trigger builds in our server.
You should change the name.

Are you planning to remove the batch mode from Unity Editor? Currently, that works quite well for CI.

No, we have no plans to remove batch mode from the Unity Editor. You can keep running what you have for CI – just remember that your CI machines need licenses, just like any other machine.

If your organisation is operating on a Unity Pro or Unity Enterprise tier, then Unity Build Server offers you a cheaper and more easy-to-administer alternative to applying full Pro or Enterprise licenses to your CI machines.

Some sort of trial would be useful – I couldn’t find any documentation to help inform a purchase decision. Eg a licence-free trial that did everything except make the actual build would help users understand how this might fit their workflow.

Unity Build Server just helps you with the licensing aspect of running Unity for your build machines – it doesn’t take a position on exactly how those builds get done beyond “Unity must only run in batch mode.”

So, incremental build support is up to your CI system – if you are using Jenkins, for example, and you configure it to preserve the working copy state between builds, then yes, your builds would happen incrementally.

Comments are closed.