🔨

[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の構築

https://qiita.com/tring/items/01df80b2133af489c902
この記事が大変参考になりました。基本↑を見て構築していけば問題ないかと思いますが、一部躓いたところがあったので、私の設定をメモします。

ワークスペースの設定(任意)

設定しなくても動きますが、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バッチコマンドを追加していきます。
基本はこちらの記事を参考に構築しています。
https://qiita.com/tring/items/01df80b2133af489c902

違いとしては、上記記事では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