vaguely

和歌山に戻りました。ふらふらと色々なものに手を出す毎日。

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

辺りからユーザー登録します。

初めての場合はアカウント名とリージョンの設定が求められます。

デフォルトでメールアドレス、アクセスしている場所から値が入っているので、特に変更なければそのままで。

ほいほいとプロジェクトの作成まで済ましてしまいます。

その他環境です。

  • Windows 10 ver.1803 build ver.17134.471
  • Unity Hub 1.3.2
  • Unity 2018.2.19f1
  • GitHub Desktop ver.1.5.0

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」をクリックすることで解決しました。

f:id:mslGt:20181218223430j:plain

ここで 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 アプリをビルドすると類似の問題が起きそうですが、皆さんどのように解決しているのでしょうか。。。