[UE5]個人プロジェクトで自動ビルド環境を組む
個人プロジェクト自動ビルド環境を組んだメモ。
環境
- Windows11
- UnrealEngine v5.5.4
- Git
- Jenkins
前提
今回私の環境では、ビルド専用のサーバーPCを上記環境で用意しました。
クライアントの開発用PCから、サーバーのGitリポジトリへプッシュし、そのリポジトリを1日1回、Jenkinsによる自動ビルドでパッケージ化します。
UnrealEngineをインストールする
公式の手順でEpicGamesLauncherからインストール。
ソースコードからの構築は不要です。
Gitサーバーの構築
ポート開けて公開でもよかったんですが、設定が面倒だったので、Windowsの共有ファイル機能を使って構築しました。
Windowsの共有ファイル機能でフォルダを作ったら、そのフォルダの中にSampleProject.git
などのフォルダ名でフォルダを作成。
※このとき、フォルダ名の末尾は.gitにします。
作ったフォルダに入ったら、下記コマンドを実行し、gitリポジトリを初期化します。
git init --bare --shared
--bareオプションをつけることで、gitリポジトリのサーバーが作れます。(作業ディレクトリを持たない、差分ファイルだけのリポジトリ)
--sharedをつけておくと複数ユーザーでアクセスできます。(今回は個人プロジェクトなので指定しなくてもOKですが、念のためつけています)
作成したGitサーバーにクライアントPCからつないで、既存のUEプロジェクトなどをコミットしておきます。
git remote add origin \\MY-SERVER\share\SampleProject.git
git push -u origin main
※クライアントPCでリモート追加する例。
Jenkinsの構築
この記事が大変参考になりました。基本↑を見て構築していけば問題ないかと思いますが、一部躓いたところがあったので、私の設定をメモします。
ワークスペースの設定(任意)
設定しなくても動きますが、UE5プロジェクトとなるとそこそこストレージ容量を食うので、設定するのがおすすめです。
「General」の項目のなかの「高度な設定」に「カスタムワークスペースを使用」という項目があるので任意のディレクトリを指定します。
Gitの設定
先ほど設定したgitリポジトリへのフルパスを設定します。
また、ビルドするブランチは、デフォルトだとmasterになっていますが、昨今github.comなどはmainブランチがデフォルトになっているので、環境に合わせて書き換えてください。
ローカルGitサーバー特有の設定
そのままだとローカルファイルをJenkinsが読めないので、起動時のオプションを設定します。
WindowsでJenkinsをインストールした場合、デフォルトであれば下記あたりのパスにあるjenkins.xml
ファイルをテキストエディタで開きます。
C:\Program Files\Jenkins\jenkins.xml
起動時のオプションに次のコマンドを足します。
-Dhudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true
起動時のオプションは、42行目付近にあるかと思います。
環境に合わせて書き換えてください。
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle
-Dhudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true -jar "C:\Program
Files\Jenkins\jenkins.war" --httpPort=8080 --webroot="%ProgramData%\Jenkins\war"</arguments>
書き換えてファイルを保存したら、タスクマネージャーから、Jenkinsのサービスを再起動させます。
これでローカルファイルを参照できるようになりました。
BuildStepsの設定
下記のWindowsバッチコマンドを追加していきます。
基本はこちらの記事を参考に構築しています。
違いとしては、上記記事ではMsBuild.exeを直接叩いているのですが、私の環境ではNuGetパッケージの再構築が必要ですというエラーが出てしまい、うまくいかなかったため、代わりにエンジン側が用意してくれているBuild.batを使用しています。
Build.batを使用する場合、slnファイルの構築も不要です。
rd /s /q temp
"<UnrealEngineへのパス>\Engine\Build\BatchFiles\Build.bat" UnrealEditor Win64 Development "%WORKSPACE%\SampleProject.uproject" -WaitMutex -FromMsBuild
"<UnrealEngineへのパス>\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun -rocket -compile -compileeditor -installed -nop4 -project="%WORKSPACE%/SampleProject.uproject" -cook -stage -archive -archivedirectory="%WORKSPACE%/temp/Development/x64" -package -clientconfig=Shipping -ue5exe=UnrealEditor-Cmd.exe -clean -pak -prereqs -nodebuginfo -targetplatform=Win64 -build -utf8output
ビルド後は、UnrealAutomationToolsに付属しているZip圧縮機能を使って、書き出したパッケージをZipに固めてshareフォルダにアップロードする処理を行っています。
ここは各プロジェクトの要件に合わせてアレンジしてください。
"<UnrealEngineへのパス>\Engine\Build\BatchFiles\RunUAT.bat" ZipUtils -archive="<zipの保存先へのパス>/release_x64_%BUILD_ID%.zip" -add="%WORKSPACE%\Saved\StagedBuilds\Windows"
以上
Discussion