ドキュメント

サポート

ビルドプロセス中のカスタムスクリプトの実行

Follow this workflow to run custom scripts before and after the build process.
読み終わるまでの所要時間 3 分最終更新 1ヶ月前

Build Automation は、ユーザーが作成したビルド前とビルド後の両方のカスタムスクリプトをサポートします。カスタムスクリプトを使用するには、これらのスクリプトをソースリポジトリにチェックインし、ビルドの詳細設定でリポジトリのルートからのスクリプトへの相対パスを設定します。

エクスポート前メソッドとエクスポート後メソッド

エクスポート前メソッドとエクスポート後メソッドを使用して、Unity プロジェクトがクラウドにビルドされる前後にアクションをトリガーします。これらのメソッドは、
Assets/Editor
フォルダー内のクラスに存在する必要があります。編集フォルダーがディレクトリにない場合は、ひとつ作成できます。

エクスポート前メソッド名

エクスポート前メソッドを使用するには、Unity プロジェクトに public の静的メソッドを作成します。このメソッドには、Unity エディターがプロジェクトをエクスポートする前と Unity エディターのスクリプトコンパイルフェーズ後に実行するコードが含まれています。
public static void PreExport()
Build Automation を有効にして、現在のビルドのビルドマニフェストをエクスポート前メソッドに渡すには、メソッドシグネチャにパラメーターとして
BuildManifestObject
オブジェクトを指定します。その後、プロジェクトまたは プレイヤー 設定を変更すると、プロジェクトをエクスポートできます。
public static void PreExport(UnityEngine.CloudBuild.BuildManifestObject manifest)
Unity Build Automation がメソッドを呼び出すと、
BuildManifestObject
オブジェクトが現在のビルドのビルドマニフェストとして
BuildManifestObject
を使用して任意のパラメーターとして渡されます。

エクスポート後メソッド名

エクスポート後メソッドを使用するには、Unity プロジェクトに public 静的メソッドを作成します。このメソッドには、Unity エディターがプロジェクトをエクスポートした後に実行するコードが含まれています。
public static void PostExport(string exportPath)
Unity Build Automation がメソッドを呼び出すとき、文字列を渡します。
  • iOS 以外のビルドターゲットの場合、文字列にはエクスポートされたプロジェクトへのパスが含まれます。
  • iOS プロジェクトの場合、この文字列にはエクスポートされた Xcode プロジェクトへのパスが含まれます。パスを使用してエクスポートした Xcode プロジェクトを特定し、ビルドプロセスを完了するために Xcode を呼び出す前に追加の前処理を実行できます。

カスタムスクリプト #define ディレクティブ

Build Automation を使用して、カスタムスクリプト #define ディレクティブを作成できます。Unity Dashboard で、ビルドターゲットの Advanced settings (詳細設定) に移動します。 Scripting Define Symbols (スクリプティング定義シンボル) フィールドでは、独自のカスタムスクリプト #define ディレクティブを、使用可能なビルトインの選択肢に追加できます。ビルドターゲットごとに、定義するシンボルの名前を入力します。これらのシンボルは、ビルトインのシンボルと同様に、 #if ディレクティブの条件として使用できます。詳細は、条件付きコンパイル を参照してください。

ノードバージョンの変更

NVM はビルドマシンにインストールされ、ビルドプロセス中に別のノードバージョンに切り替えることができます。以下のサンプルスクリプトは、Node 16.13.0 にインストールと切り替えを行います。
#!/usr/bin/env bash## Source profile##install-nvm-modules-and-set-version. ~/.profile## Install NVM modules and set version##output-node-version-usednvm install 16.13.0nvm use 16.13.0## Output Node version used##source-profilenode -vexit 0

他の Ruby バージョンの使用

RVM
gem
はビルドマシンにインストールされ、ビルドプロセス中に異なるバージョンの Ruby を使用できます。以下のサンプルスクリプトは、Ruby 3.3.0 をインストールし、
DO
を使用してコマンドを実行するため、UBA ツールによって使用されるシステムの Ruby のインストールに影響しません。
#!/usr/bin/env bash## Source profilervm install ruby-3.3.0rvm ruby-3.3.0 do gem install fastlanervm ruby-3.3.0 do fastlane --helpexit 0
rvm install ruby-3.3.0 --with-openssl-dir=$(brew --prefix openssl@1.1)

環境変数の設定

echo "{environment_variable_name}={value}" >> "$DEVOPS_ENV"
Unity ビルドとビルド後スクリプトで環境変数を使用できるようにするには、環境変数を定義または更新し、この値を
DEVOPS_ENV
環境ファイルに書き込みます。環境変数を作成または更新するスクリプトは新しい値にアクセスできませんが、後続のすべてのプロセスにはアクセスできます。環境変数名は、指定した名前の大文字バージョンとして保存されます (
testenv
TESTENV
になります)。1 行の環境変数のみがサポートされます。

DEVOPS_ENV への環境変数の書き込み例

ビルド前スクリプトで環境変数を設定します。
echo "TEST_ENV=Sample environment variable" >> $DEVOPS_ENV
その後、ビルド後スクリプトで環境変数をエコーします。
echo $TEST_ENV

ビルド後スクリプトでのビルドアーティファクトへのアクセス

ビルドアーティファクトにアクセスしてストアフロントに自動アップロードしたり、ビルド後スクリプトを使用してビルドプロセスの一部を自動化することができます。ビルド後スクリプトで環境変数を使用してパスを Windows 実行ファイルに渡す場合は、cygwin パスを使用する必要があります。

プレイヤーへのパスを取得するサンプルスクリプト

#!/bin/bash#This is a sample that will simply output the path to the build artifactecho "START"PLAYER_PATH=$UNITY_PLAYER_PATH#If we are using a Windows Builder and using the path to pass it to a native Windows application, we need to properly convert the cygwin player path to windows formatif [[ "$BUILDER_OS" == "WINDOWS" ]]; thenPLAYER_PATH=$(cygpath -wa "$UNITY_PLAYER_PATH")fiecho "$PLAYER_PATH"

ログのマスク値

値をマスキングすると、文字列や変数がログに出力されなくなります。マスクされた各値は、値の内容に関係なく
*****
に置き換えられます。マスクコマンドに環境変数または Raw 値を渡すことができます。
文字列または環境変数をマスクするには、
::mask-value::
コマンドを使用します。
echo "::mask-value::{value}"

例: 値のマスキング

"SuperS3cretPassword!"
をマスクするには、 値に
::mask-value::
コマンドを設定します。
echo "::mask-value::SuperS3cretPassword!"
これがログに出力されると、出力は
"*****"
として表示されます。

例: 変数のマスキング

変数
DB_PASSWORD
または変数値
"SuperS3cretPassword!"
をマスクするには、変数に
::mask-value::
コマンドを設定します。
DB_PASSWORD=SuperS3cretPassword!echo "::mask-value::$DB_PASSWORD"
これらのいずれかがログに出力されると、出力は
"*****"
として表示されます。

例: 環境変数のマスキング

$DEVOPS_ENV
で設定された環境変数はマスクできます。環境変数の値を設定し、マスクしてから、他のスクリプトで使用するために値を
$DEVOPS_ENV
ファイルに出力します。
DB_PASSWORD=SuperS3cretPassword!echo "::mask-value::$DB_PASSWORD"echo "DB_PASSWORD=$DB_PASSWORD" >> $DEVOPS_ENV