Unity のプロジェクトを Azure Pipelines でビルドしたくて七転八倒した話
はじめに
※ 2019/01/12 更新
Azure Pipeline → Azure Pipelines に修正しました。
これは Azure DevOps Advent Calendar 2018 の十八日目の記事です。
とあるきっかけで Azure DevOps に挑戦することになったのですが(今回は仕事じゃないです)、まずは CI/CD ツールである Azure Pipelines から試してみよう! となりました。
せっかくなので、仕事でよく触る Unity を題材にしてみよう、と思ったは良いのですが、初めてづくしということで大変でした、という話です。
準備
まずは準備から。
https://azure.microsoft.com/ja-jp/services/devops/pipelines
辺りからユーザー登録します。
初めての場合はアカウント名とリージョンの設定が求められます。
デフォルトでメールアドレス、アクセスしている場所から値が入っているので、特に変更なければそのままで。
ほいほいとプロジェクトの作成まで済ましてしまいます。
その他環境です。
Unity プロジェクトを作る
とりあえずビルドができるかどうかが確かめられれば、ということで、プロジェクトだけ作成してそのまま閉じてしまいます。
.gitignore は GitHub にテンプレートがあるのでそれを使用するか、 GitHub Desktop を使う場合はリポジトリ作成時にプルダウンから選択すると便利です。
https://github.com/github/gitignore/blob/master/Unity.gitignore
で、ちゃちゃっと GitHub にリポジトリ作っておきます。
https://github.com/masanori840816/AzurePipelineSampleUnity/
Unity Build について
Azure Pipelines でのビルドですが、 Visual Studio Market に Unity ビルド用のプラグイン?があります。
また、これを使ってビルドする方法を紹介してくれているブログもありました。
基本的にはこの通り従っていけばビルドができます。
後でも触れますが、 Unity のビルドは Unity Editor がインストールされていないとできません。
そのため、クラウド環境上でビルドするのではなく、自分の(またはビルド用に準備した)マシンを Agent として登録し、 Azure Pipelines からマシンに登録した Unity Editor をコマンドラインから実行してビルドする、という流れとなります。
ただ、いくつか引っかかったことがあったので補足(蛇足?)的に書き残しておきます。
Agent のキーがコピーできない
いきなり Unity や Unity Build とは関係ない話ですがw
Edge で Project Settings > Agent pools を開き、 Agent を作成し、 Download Agent でダウンロード。
。。。の辺りまでは良かったのですが、キーのコピーボタンを押してもコピーができずorz (Copyボタンを押すと Copiedとなるもののコピーできてない)
またキーが一部省略されているので直接入力も無理/(^o^)\
どうしよう。。。と思っていましたが、 Firefox で上記ページを開いたら問題なくコピーできたため解決しました。
納得がいかないものを感じなくもないですが、まぁ良かったです。
Empty job が見つからない
これが一番ハマりました。
Agent をインストールして、 Pipelines > Builds > New pipeline から上記ブログの手順に従って登録を進めたところ、 Empty job が見つからないorz
これは、最初にリポジトリの参照元を選択する画面で、「Use the visual designer」をクリックすることで解決しました。
ここで Azure Repos や GitHub を選んでしまうと Empty Job が表示されずつんでしまうという/(^o^)\ (記事では書かれていたのを見落としたかもしれません)
なおビルドの結果生成された実行ファイルは、下記のような場所に出力されます。
[Agent を置いた場所]_work\1\s\Build\standalone
課題
曲がりなりにもビルドはできるようになったので、このまま開発を進めていきたいところですが、課題が一つ。
先に触れた、 Azure Pipelines のビルドでマシンにインストールされている Unity Editor を使っている、という点です。
開発用のマシンとビルド用のマシンが同じである場合、 Azure Pipelines のビルドを走らせるためにはいったん Unity Editor を閉じないとエラーになります。
Unity Editor の実行ファイルを同時に2つ以上開けないためなのですが、これはちょっとキビしい。。。
また、 Unity Editor をインストール・実行する必要があるため、サーバーマシンでは難しそうな気がします(ここは調べていないだけで対応されているかもしれませんが)。
ということで、開発用マシン一台しかない私の環境では、現状素直に手動でビルドするか、 Unity Cloud Build 辺りを検討するのが良さそう、という結論になりました。
Azure Pipelines に限らず CI/CD ツールで Unity アプリをビルドすると類似の問題が起きそうですが、皆さんどのように解決しているのでしょうか。。。