ビルドプロセス中のカスタムスクリプトの実行
Follow this workflow to run custom scripts before and after the build process.
読み終わるまでの所要時間 3 分最終更新 9ヶ月前
Build Automation は、ユーザーが作成したビルド前とビルド後の両方のカスタムスクリプトをサポートします。カスタムスクリプトを使用するには、これらのスクリプトをソースリポジトリにチェックインし、ビルドの詳細設定でリポジトリのルートからのスクリプトへの相対パスを設定します。
エクスポート前メソッドとエクスポート後メソッド
エクスポート前メソッドとエクスポート後メソッドを使用して、Unity プロジェクトがクラウドにビルドされる前後にアクションをトリガーします。これらのメソッドは、 フォルダー内のクラスに存在する必要があります。編集フォルダーがディレクトリにない場合は、ひとつ作成できます。
Assets/Editorエクスポート前メソッド名
エクスポート前メソッドを使用するには、Unity プロジェクトに public の静的メソッドを作成します。このメソッドには、Unity エディターがプロジェクトをエクスポートする前と Unity エディターのスクリプトコンパイルフェーズ後に実行するコードが含まれています。
public static void PreExport()
Build Automation を有効にして、現在のビルドのビルドマニフェストをエクスポート前メソッドに渡すには、メソッドシグネチャにパラメーターとして オブジェクトを指定します。その後、プロジェクトまたは プレイヤー 設定を変更すると、プロジェクトをエクスポートできます。
BuildManifestObjectpublic static void PreExport(UnityEngine.CloudBuild.BuildManifestObject manifest)
Unity Build Automation がメソッドを呼び出すと、 オブジェクトが現在のビルドのビルドマニフェストとして を使用して任意のパラメーターとして渡されます。
BuildManifestObjectBuildManifestObjectエクスポート後メソッド名
エクスポート後メソッドを使用するには、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 バージョンの使用
RVMgemDO#!/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 ビルドとビルド後スクリプトで環境変数を使用できるようにするには、環境変数を定義または更新し、この値を 環境ファイルに書き込みます。環境変数を作成または更新するスクリプトは新しい値にアクセスできませんが、後続のすべてのプロセスにはアクセスできます。環境変数名は、指定した名前の大文字バージョンとして保存されます ( は になります)。1 行の環境変数のみがサポートされます。
DEVOPS_ENVtestenvTESTENVDEVOPS_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_ENVDB_PASSWORD=SuperS3cretPassword!echo "::mask-value::$DB_PASSWORD"echo "DB_PASSWORD=$DB_PASSWORD" >> $DEVOPS_ENV