mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-03-21 18:05:03 -05:00
111 lines
3.5 KiB
YAML
111 lines
3.5 KiB
YAML
name: Create UnityPackage
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
# push:
|
|
# branches:
|
|
# - workflow-wip-2
|
|
|
|
env:
|
|
UNITY_PROJECT_PATH: .
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
jobs:
|
|
create-unitypackage:
|
|
runs-on: [self-hosted, Windows, X64, Unity]
|
|
timeout-minutes: 60
|
|
steps:
|
|
- id: checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
lfs: true
|
|
|
|
- name: Detect Unity Version
|
|
id: detect-unity-version
|
|
run: |
|
|
PROJECT_VERSION_PATH="${{ env.UNITY_PROJECT_PATH }}/ProjectSettings/ProjectVersion.txt"
|
|
UNITY_HUB="C:\Program Files\Unity Hub\Unity Hub.exe"
|
|
|
|
UNITY_VERSION=`cat ${PROJECT_VERSION_PATH} | sed -n -E "s/^m_EditorVersion:\s+//p" | head -n 1`
|
|
UNITY_CHANGESET=`cat ${PROJECT_VERSION_PATH} | sed -n -E "s/^m_EditorVersionWithRevision:\s+\S+\s+\((\S+)\)/\1/p" | head -n 1`
|
|
UNITY_EDITOR_EXECUTABLE=`"${UNITY_HUB}" -- --headless editors --installed | \
|
|
sed -n -E "s/^${UNITY_VERSION} installed at //p" | \
|
|
head -n 1`
|
|
|
|
if [ -z "${UNITY_EDITOR_EXECUTABLE}" ]; then
|
|
echo "Unity ${UNITY_VERSION} is not installed."
|
|
exit 1
|
|
|
|
# コマンドラインからのインストールは Unity 3.7.0 時点では UAC 必須で難しい
|
|
UNITY_INSTALL_COMMAND="\"${UNITY_HUB}\" -- --headless install \
|
|
--version ${UNITY_VERSION} \
|
|
--changeset ${UNITY_CHANGESET} \
|
|
--module windows-il2cpp \
|
|
--childModules"
|
|
fi
|
|
|
|
echo "${UNITY_EDITOR_EXECUTABLE} is installed."
|
|
echo "unity-editor-executable=${UNITY_EDITOR_EXECUTABLE}" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Run EditMode Tests
|
|
id: run-edit-mode-tests
|
|
run: |
|
|
echo "Run EditMode Tests..."
|
|
# RunEditModeTests の実行の結果、終了コードが 0 でない場合でもテストの結果を表示したいので set +e して一時的に回避する
|
|
set +e
|
|
"${{ steps.detect-unity-version.outputs.unity-editor-executable }}" \
|
|
-batchmode \
|
|
-silent-crashes \
|
|
-projectPath "${{ env.UNITY_PROJECT_PATH }}" \
|
|
-executeMethod "UniGLTF.TestRunner.RunEditModeTests" \
|
|
-logFile run-edit-mode-tests.log \
|
|
-testRunnerNUnitXmlFile run-edit-mode-tests.xml
|
|
RET=$?
|
|
set -e
|
|
|
|
echo "Output Log..."
|
|
cat run-edit-mode-tests.log | egrep "^\[\[TestRunnerLog\]\]"
|
|
|
|
# TODO: テスト結果を NUnit3 形式の run-edit-mode-tests.xml から読み込んで表示する
|
|
|
|
if [ ${RET:-1} -eq 0 ]; then
|
|
echo "Test succeeded."
|
|
exit 0
|
|
else
|
|
echo "Test failed."
|
|
exit 1
|
|
fi
|
|
|
|
- name: Upload test results
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: run-edit-mode-tests.xml
|
|
path: ${{ env.UNITY_PROJECT_PATH }}/run-edit-mode-tests.xml
|
|
|
|
- name: Create UnityPackage
|
|
id: create-unitypackage
|
|
run: |
|
|
"${{ steps.detect-unity-version.outputs.unity-editor-executable }}" \
|
|
-batchmode \
|
|
-silent-crashes \
|
|
-projectPath "${{ env.UNITY_PROJECT_PATH }}" \
|
|
-executeMethod "VRM.DevOnly.PackageExporter.VRMExportUnityPackage.CreateUnityPackageWithBuild" \
|
|
-logFile create-unitypackage.log
|
|
|
|
echo "Success to create UnityPackage."
|
|
|
|
- name: Upload UnityPackage
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: unitypackage
|
|
path: ${{ env.UNITY_PROJECT_PATH }}/*.unitypackage
|
|
|
|
|
|
|
|
|