Skip to content
name: Create UnityPackage
on:
workflow_dispatch:
push:
branches:
- workflow-wip-2
env:
UNITY_PROJECT_PATH: .
defaults:
run:
shell: bash
jobs:
checkout:
runs-on: [self-hosted, Windows, X64, Unity]
steps:
- id: checkout
uses: actions/checkout@v4
with:
submodules: recursive
lfs: true
detect-unity-version:
needs: checkout
runs-on: [self-hosted, Windows, X64, Unity]
outputs:
unity-editor-executable: ${{ steps.detect-unity-version.outputs.unity-editor-executable }}
steps:
- name: Detect Unity Version
id: detect-unity-version
run: |
PROJECT_VERSION_PATH="${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=${UNITY_EDITOR_EXECUTABLE}" >> "${GITHUB_OUTPUT}"
run-edit-mode-tests:
needs: detect-unity-version
runs-on: [self-hosted, Windows, X64, Unity]
steps:
- name: Run EditMode Tests
id: run-edit-mode-tests
run: |
echo "Run EditMode Tests..."
# RunEditModeTests の実行の結果、終了コードが 0 でない場合でもテストの結果を表示したいので set +e して一時的に回避する
set +e
"${{ needs.detect-unity-version.outputs.unity-editor-executable }}" \
-batchmode \
-silent-crashes \
-projectPath "${UNITY_PROJECT_PATH}" \
-executeMethod "UniGLTF.TestRunner.RunEditModeTests" \
-logFile output.log \
-testRunnerNUnitXmlFile output.xml
RET=$?
set -e
echo "Output Log..."
cat output.log | egrep "^\[\[TestRunnerLog\]\]"
if [ ${RET:-1} -eq 0 ]; then
echo "Test succeeded."
exit 0
else
echo "Test failed."
exit 1
fi
- name: Upload Test Results
id: upload-test-results
# v4 だとテストレポーターでエラーになるので v3 を使う
uses: actions/upload-artifact@v3
if: ${{ !cancelled() }}
with:
name: nunit-test-results
path: output.xml
- uses: dorny/test-reporter@v1
with:
artifact: nunit-test-results
name: UnityPackage Test Report
path: output.xml
reporter: dotnet-trx