Unity Tools for Azure DevOps の使い方


はじめに

Unity Tools for Azure DevOps とは Azure DevOps の Pipelines で利用可能な Unity のビルドタスクです。

ただ、注意点としては、まだ結構内容に変更が多いです。
執筆時点でのバージョンは V3 ですが、V3 と言いながら違う動作をする V3 がデプロイされています。
また、Github で公開されているソースコードと実際にタスクを利用した時の挙動が違います。
この記事は Github も参照してますが、実際に Pipelines で実行してみた結果を記載しております。
とはいえ、この投稿以降でも更新されている可能性はありますのでご注意を…。

Azure DevOps Marketplace:
https://marketplace.visualstudio.com/items?itemName=DinomiteStudios.64e90d50-a9c0-11e8-a356-d3eab7857116
Github:
https://github.com/Dinomite-Studios/unity-azure-pipelines-tasks

タスク一覧

Unity Tools for Azure DevOps には以下のタスクが実装されています。

  • UnityGetProjectVersion
  • UnityActivateLicense
  • UnityBuild
  • UnityCMD
  • UnityTest

UnityGetProjectVersion

このタスクの利用目的はプロジェクトで利用している Unity のバージョンと同じバージョンをインストールするためです。

これは指定された Unity プロジェクトで利用している Unity のバージョンを ProjectVersion.txt から読み込んで返します。
成功すると projectVersion にバージョン番号が設定されます。

引数 省略 説明
projectPath Unity プロジェクトへのパス

Unity プロジェクトがリポジトリ直下にある場合は projectPath には $(Build.SourcesDirectory) を渡しておけば問題ないです。

戻値 説明
projectVersion Unity のバージョン番号

Unity プロジェクトに設定されているバージョン番号が返ります。

- task: UnityGetProjectVersionTask@1
  name: UnityGetProjectVersion
  displayName: 'Getting a version of Unity'
  inputs:
    unityProjectPath: '$(Unity.ProjectPath)'

UnityActiveteLicense

このタスクの利用目的は Unity のライセンスをアクティベートするためです。
また、ポスト処理が入っており、ジョブ終了時にそのライセンスをリリースも実行してくれます。

Microsoft-hosted で実行する場合、毎度新規で Unity をインストールしますし、ライセンスが毎度がリリースされますので、この処理が必要になります。

引数 省略 説明
username × ユーザー名
password × パスワード
serial × シリアル番号
unityEditorsPathMode Unity エディタのインストールディレクトリモードを選択。省略された場合は unityHub が設定される。

unityHub(デフォルト):Unity Hub のデフォルトのパスを利用

environmentVariable:環境変数 $UNITYHUB_EDITORS_FOLDER_LOCATION に指定されたパスを利用

specify:customUnityEditorsPath に指定されたパスを利用
customUnityEditorsPath Unity エディタへのパスを絶対パスで指定。unityEditorsPathMode に specify が指定された場合に有効。省略した場合はカレントディレクトリが使用される。
unityProjectPath Unity のプロジェクトが配置されているパス。省略された場合はカレントディレクトリが設定される。
戻値 説明
logsOutputPath ログファイルパス
- task: UnityActivateLicenseTask@1
  displayName: 'Unity License Activations.'
  condition: succeeded()
  inputs:
    username: $(Unity.UserName)
    password: $(Unity.Password)
    serial: $(Unity.SerialKey)
    unityEditorsPathMode: 'unityHub'
    unityProjectPath: '$(Unity.ProjectPath)'

UnityBuild

このタスクは Unity プロジェクトをビルドするために利用します。

Unity を利用した場合に、バッチビルドで様々な処理をさせずに単にビルドしたいというだけであれば、バッチファイルも自動生成してくれますので非常に便利に使えます。

引数 省略 説明
additionalCmdArgs 追加でコマンドラインに渡したい引数がある場合に、この引数で指定する。自前のバッチビルドファイルを指定する時に -quit とかに利用できる。
buildScriptType ビルドに利用するスクリプトの指定。

default:ビルドスクリプトは自動生成されたものを利用する。

inline:inlineBulidScript に記述されたスクリプトを利用する。

existing(デフォルト):
inlineBuildScript buildScriptType に 'inline' が指定された場合に executeMethod で実行されるスクリプトを指定する。
buildTarget × ビルドするターゲット名を指定する。指定方法は『Unity のコマンドライン』の『-buildTarget』を参照。
unityEditorsPathMode UnityActiveteLicense と同じ。
customUnityEditorsPath UnityActiveteLicense と同じ。
unityProjectPath UnityActiveteLicense と同じ。
outputFileName 出力するファイル名。省略された場合は 'drop' という名前に設定される。
outputPath 出力するディレクトリパス。省略された場合はカレントディレクトリが設定される。
戻値 説明
logsOutputPath UnityActiveteLicense と同じ。
- task: UnityBuildTask@3
  displayName: 'Building.'
  condition: succeeded()
  inputs:
    unityEditorsPathMode: 'unityHub'
    buildTarget: '$(Unity.TargetBuild)'
    unityProjectPath: '$(Unity.ProjectPath)'
    outputPath: '$(Build.BinariesDirectory)'
    outputFileName: 'Build'

UnityCMD

このタスクは、ビルドまで大層な事をしたいわけではなく、バッチ処理をしたいというときには手軽に使えるタスクです。
UnityBuild の細かい設定を全部自前でやるというだけのタスクです。

引数 省略 説明
cmdArgs 追加でコマンドラインに渡したい引数がある場合に、この引数で指定する。自前のバッチビルドファイルを指定する時に -quit とかに利用できる。
buildTarget × UnityBuild と同じ。
unityEditorsPathMode UnityActiveteLicense と同じ。
customUnityEditorsPath UnityActiveteLicense と同じ。
unityProjectPath UnityActiveteLicense と同じ。

UnityTest

(省略)

おわりに

正直言って、結構ソースコードの内容を読まないとまともにパラメータの指定方法も分からなかったりで苦労しましたが、Unity と Pipelines で利用するには重宝するタスクに違いありません。

どちらにせよ、直接 YAML を編集する上ではこの辺りのタスクは覚えておいて損はしませんので!