unity-builder/dist/platforms/mac/steps/build.sh

198 lines
5.1 KiB
Bash
Raw Normal View History

Initial Support for MacOS IL2CPP Builds (#326) * Add intial framework for macos builds. Test install editor * Fix unity hub path space * Single quote space in path * Escape space character * More backslashes * Move to bash scripts for setup * Add path to command args * Different command to run shell script * Use full path to scripts * Unpack changeset value and fix missing escape characters * Print changeset * More debug * Remove debug * Fix script paths * Printenv debug * Write environment variables to file to read in bash script * Debug file write * More debug * Fix missing await * Move back to process.env * Fix path typo * Add missing flags * Make directory for license activation * Add missing sudo * Give permissions to license folder * Fix path issues * Add build tests * Try ts setup again * Try quoting path * Further migrate mac scripts to align with linux scripts * print pwd * Fix changeset and remove unneeded env vars * Ignore return code * fix missing current directory * Fix project path * pwd * Remove project path * Revert to cwd being the workspace folder and pass action folder as an env variable. * Add blank project to use for activation * Add blank project path * Fix build tests * Don't rebuild library on windows * Fix project path windows * Fix platform specific workspace env variable * Fix incorrect variable name * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update dist/BlankProject/Packages/packages-lock.json Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Fix formatting Co-authored-by: Webber Takken <webber.nl@gmail.com>
2022-02-02 09:15:37 +00:00
#!/usr/bin/env bash
#
# Set project path
#
UNITY_PROJECT_PATH="$GITHUB_WORKSPACE/$PROJECT_PATH"
echo "Using project path \"$UNITY_PROJECT_PATH\"."
#
# Display the name for the build, doubles as the output name
#
echo "Using build name \"$BUILD_NAME\"."
#
# Display the build's target platform;
#
echo "Using build target \"$BUILD_TARGET\"."
#
# Display build path and file
#
echo "Using build path \"$BUILD_PATH\" to save file \"$BUILD_FILE\"."
BUILD_PATH_FULL="$GITHUB_WORKSPACE/$BUILD_PATH"
CUSTOM_BUILD_PATH="$BUILD_PATH_FULL/$BUILD_FILE"
#
# Set the build method, must reference one of:
#
# - <NamespaceName.ClassName.MethodName>
# - <ClassName.MethodName>
#
# For example: `BuildCommand.PerformBuild`
#
# The method must be declared static and placed in project/Assets/Editor
#
if [ -z "$BUILD_METHOD" ]; then
# User has not provided their own build command.
#
# Use the script from this action which builds the scenes that are enabled in
# the project.
#
echo "Using built-in build method."
# Create Editor directory if it does not exist
mkdir -p "$UNITY_PROJECT_PATH/Assets/Editor/"
# Copy the build script of Unity Builder action
cp -R "$ACTION_FOLDER/default-build-script/Assets/Editor/" "$UNITY_PROJECT_PATH/Assets/Editor/"
# Set the Build method to that of UnityBuilder Action
BUILD_METHOD="UnityBuilderAction.Builder.BuildProject"
# Verify recursive paths
ls -Ralph "$UNITY_PROJECT_PATH/Assets/Editor/"
#
else
# User has provided their own build method.
# Assume they also bring their own script.
#
echo "Using build method \"$BUILD_METHOD\"."
#
fi
#
# Prepare Android keystore and SDK, if needed
#
if [[ "$BUILD_TARGET" == "Android" && -n "$ANDROID_KEYSTORE_NAME" && -n "$ANDROID_KEYSTORE_BASE64" ]]; then
echo "Creating Android keystore."
echo "$ANDROID_KEYSTORE_BASE64" | base64 --decode > "$UNITY_PROJECT_PATH/$ANDROID_KEYSTORE_NAME"
echo "Created Android keystore."
else
echo "Not creating Android keystore."
fi
if [[ "$BUILD_TARGET" == "Android" && -n "$ANDROID_SDK_MANAGER_PARAMETERS" ]]; then
echo "Updating Android SDK with parameters: $ANDROID_SDK_MANAGER_PARAMETERS"
ANDROID_INSTALL_LOCATION="/Applications/Unity/Hub/Editor/$UNITY_VERSION/PlaybackEngines/AndroidPlayer"
export JAVA_HOME="$ANDROID_INSTALL_LOCATION/OpenJDK"
export ANDROID_HOME="$ANDROID_INSTALL_LOCATION/SDK"
yes | "$ANDROID_HOME/tools/bin/sdkmanager" "$ANDROID_SDK_MANAGER_PARAMETERS"
Initial Support for MacOS IL2CPP Builds (#326) * Add intial framework for macos builds. Test install editor * Fix unity hub path space * Single quote space in path * Escape space character * More backslashes * Move to bash scripts for setup * Add path to command args * Different command to run shell script * Use full path to scripts * Unpack changeset value and fix missing escape characters * Print changeset * More debug * Remove debug * Fix script paths * Printenv debug * Write environment variables to file to read in bash script * Debug file write * More debug * Fix missing await * Move back to process.env * Fix path typo * Add missing flags * Make directory for license activation * Add missing sudo * Give permissions to license folder * Fix path issues * Add build tests * Try ts setup again * Try quoting path * Further migrate mac scripts to align with linux scripts * print pwd * Fix changeset and remove unneeded env vars * Ignore return code * fix missing current directory * Fix project path * pwd * Remove project path * Revert to cwd being the workspace folder and pass action folder as an env variable. * Add blank project to use for activation * Add blank project path * Fix build tests * Don't rebuild library on windows * Fix project path windows * Fix platform specific workspace env variable * Fix incorrect variable name * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update dist/BlankProject/Packages/packages-lock.json Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Fix formatting Co-authored-by: Webber Takken <webber.nl@gmail.com>
2022-02-02 09:15:37 +00:00
echo "Updated Android SDK."
else
echo "Not updating Android SDK."
fi
#
# Pre-build debug information
#
echo ""
echo "###########################"
echo "# Custom parameters #"
echo "###########################"
echo ""
echo "$CUSTOM_PARAMETERS"
echo ""
echo "###########################"
echo "# Current build dir #"
echo "###########################"
echo ""
echo "Creating \"$BUILD_PATH_FULL\" if it does not exist."
mkdir -p "$BUILD_PATH_FULL"
ls -alh "$BUILD_PATH_FULL"
echo ""
echo "###########################"
echo "# Project directory #"
echo "###########################"
echo ""
ls -alh "$UNITY_PROJECT_PATH"
#
# Build
#
echo ""
echo "###########################"
echo "# Building project #"
echo "###########################"
echo ""
# Reference: https://docs.unity3d.com/2019.3/Documentation/Manual/CommandLineArguments.html
/Applications/Unity/Hub/Editor/$UNITY_VERSION/Unity.app/Contents/MacOS/Unity \
Misc QOL Updates and bug fixes (#505) * Add caching for Unity Hub/Editor on MacOS. Add parameter to pin Unity Hub version on MacOS. Live output MacOS build log to console. Hid extraneous log outputs from git. Throw error when failures detected in log output. * Update pr template links * Add system to build Android Project. Update PR Template links. Fix missing types on functions. Cleanup mac-setup module installation * Switch to androidExportType instead of exportGoogleAndroidProject * Enforce minimum node version * Enforce node version minimum. Added yarn-audit-fix to dev dependencies and Updated package vulnerabilities. * Improve deprecation warning * Add android symbol type parameter. Change windows scripts to use $LastExitCode and not $?. Update tests. * Fix issues on android symbols for older unity versions. Change symbol default to public. Increase build test coverage of unity versions. * Remove 2018.1 from tests * Remove out variable declaration to support Unity 2018 in default build script. Remove <2019.3 versions of unity from windows builder as IL2CPP isn't supported until 2019.3. * Fix typo. Use reflection to set buildAppBundle as Unity 2018.2 doesn't support it * Add missing reflection using * Remove 2018-2019.3 unity versions from mac as they don't support IL2CPP. Fix app identifier for android in testproject * Fix android bundle id * Updated android identifier. Removed incompatible unity versions from tests. Add retry logic to windows as it seems to have licensing issues when so many runners start * Add timeout and continue on error
2023-02-14 05:07:10 +00:00
-logFile - \
$( [ "${MANUAL_EXIT}" == "true" ] || echo "-quit" ) \
Initial Support for MacOS IL2CPP Builds (#326) * Add intial framework for macos builds. Test install editor * Fix unity hub path space * Single quote space in path * Escape space character * More backslashes * Move to bash scripts for setup * Add path to command args * Different command to run shell script * Use full path to scripts * Unpack changeset value and fix missing escape characters * Print changeset * More debug * Remove debug * Fix script paths * Printenv debug * Write environment variables to file to read in bash script * Debug file write * More debug * Fix missing await * Move back to process.env * Fix path typo * Add missing flags * Make directory for license activation * Add missing sudo * Give permissions to license folder * Fix path issues * Add build tests * Try ts setup again * Try quoting path * Further migrate mac scripts to align with linux scripts * print pwd * Fix changeset and remove unneeded env vars * Ignore return code * fix missing current directory * Fix project path * pwd * Remove project path * Revert to cwd being the workspace folder and pass action folder as an env variable. * Add blank project to use for activation * Add blank project path * Fix build tests * Don't rebuild library on windows * Fix project path windows * Fix platform specific workspace env variable * Fix incorrect variable name * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update dist/BlankProject/Packages/packages-lock.json Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Fix formatting Co-authored-by: Webber Takken <webber.nl@gmail.com>
2022-02-02 09:15:37 +00:00
-batchmode \
-nographics \
-username "$UNITY_EMAIL" \
-password "$UNITY_PASSWORD" \
Initial Support for MacOS IL2CPP Builds (#326) * Add intial framework for macos builds. Test install editor * Fix unity hub path space * Single quote space in path * Escape space character * More backslashes * Move to bash scripts for setup * Add path to command args * Different command to run shell script * Use full path to scripts * Unpack changeset value and fix missing escape characters * Print changeset * More debug * Remove debug * Fix script paths * Printenv debug * Write environment variables to file to read in bash script * Debug file write * More debug * Fix missing await * Move back to process.env * Fix path typo * Add missing flags * Make directory for license activation * Add missing sudo * Give permissions to license folder * Fix path issues * Add build tests * Try ts setup again * Try quoting path * Further migrate mac scripts to align with linux scripts * print pwd * Fix changeset and remove unneeded env vars * Ignore return code * fix missing current directory * Fix project path * pwd * Remove project path * Revert to cwd being the workspace folder and pass action folder as an env variable. * Add blank project to use for activation * Add blank project path * Fix build tests * Don't rebuild library on windows * Fix project path windows * Fix platform specific workspace env variable * Fix incorrect variable name * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update dist/BlankProject/Packages/packages-lock.json Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Fix formatting Co-authored-by: Webber Takken <webber.nl@gmail.com>
2022-02-02 09:15:37 +00:00
-customBuildName "$BUILD_NAME" \
-projectPath "$UNITY_PROJECT_PATH" \
-buildTarget "$BUILD_TARGET" \
-customBuildTarget "$BUILD_TARGET" \
-customBuildPath "$CUSTOM_BUILD_PATH" \
-executeMethod "$BUILD_METHOD" \
-buildVersion "$VERSION" \
-androidVersionCode "$ANDROID_VERSION_CODE" \
-androidKeystoreName "$ANDROID_KEYSTORE_NAME" \
-androidKeystorePass "$ANDROID_KEYSTORE_PASS" \
-androidKeyaliasName "$ANDROID_KEYALIAS_NAME" \
-androidKeyaliasPass "$ANDROID_KEYALIAS_PASS" \
-androidTargetSdkVersion "$ANDROID_TARGET_SDK_VERSION" \
Misc QOL Updates and bug fixes (#505) * Add caching for Unity Hub/Editor on MacOS. Add parameter to pin Unity Hub version on MacOS. Live output MacOS build log to console. Hid extraneous log outputs from git. Throw error when failures detected in log output. * Update pr template links * Add system to build Android Project. Update PR Template links. Fix missing types on functions. Cleanup mac-setup module installation * Switch to androidExportType instead of exportGoogleAndroidProject * Enforce minimum node version * Enforce node version minimum. Added yarn-audit-fix to dev dependencies and Updated package vulnerabilities. * Improve deprecation warning * Add android symbol type parameter. Change windows scripts to use $LastExitCode and not $?. Update tests. * Fix issues on android symbols for older unity versions. Change symbol default to public. Increase build test coverage of unity versions. * Remove 2018.1 from tests * Remove out variable declaration to support Unity 2018 in default build script. Remove <2019.3 versions of unity from windows builder as IL2CPP isn't supported until 2019.3. * Fix typo. Use reflection to set buildAppBundle as Unity 2018.2 doesn't support it * Add missing reflection using * Remove 2018-2019.3 unity versions from mac as they don't support IL2CPP. Fix app identifier for android in testproject * Fix android bundle id * Updated android identifier. Removed incompatible unity versions from tests. Add retry logic to windows as it seems to have licensing issues when so many runners start * Add timeout and continue on error
2023-02-14 05:07:10 +00:00
-androidExportType "$ANDROID_EXPORT_TYPE" \
-androidSymbolType "$ANDROID_SYMBOL_TYPE" \
$CUSTOM_PARAMETERS
Initial Support for MacOS IL2CPP Builds (#326) * Add intial framework for macos builds. Test install editor * Fix unity hub path space * Single quote space in path * Escape space character * More backslashes * Move to bash scripts for setup * Add path to command args * Different command to run shell script * Use full path to scripts * Unpack changeset value and fix missing escape characters * Print changeset * More debug * Remove debug * Fix script paths * Printenv debug * Write environment variables to file to read in bash script * Debug file write * More debug * Fix missing await * Move back to process.env * Fix path typo * Add missing flags * Make directory for license activation * Add missing sudo * Give permissions to license folder * Fix path issues * Add build tests * Try ts setup again * Try quoting path * Further migrate mac scripts to align with linux scripts * print pwd * Fix changeset and remove unneeded env vars * Ignore return code * fix missing current directory * Fix project path * pwd * Remove project path * Revert to cwd being the workspace folder and pass action folder as an env variable. * Add blank project to use for activation * Add blank project path * Fix build tests * Don't rebuild library on windows * Fix project path windows * Fix platform specific workspace env variable * Fix incorrect variable name * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update dist/BlankProject/Packages/packages-lock.json Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Fix formatting Co-authored-by: Webber Takken <webber.nl@gmail.com>
2022-02-02 09:15:37 +00:00
# Catch exit code
BUILD_EXIT_CODE=$?
# Display logs
cat "$UNITY_PROJECT_PATH/out.log"
Initial Support for MacOS IL2CPP Builds (#326) * Add intial framework for macos builds. Test install editor * Fix unity hub path space * Single quote space in path * Escape space character * More backslashes * Move to bash scripts for setup * Add path to command args * Different command to run shell script * Use full path to scripts * Unpack changeset value and fix missing escape characters * Print changeset * More debug * Remove debug * Fix script paths * Printenv debug * Write environment variables to file to read in bash script * Debug file write * More debug * Fix missing await * Move back to process.env * Fix path typo * Add missing flags * Make directory for license activation * Add missing sudo * Give permissions to license folder * Fix path issues * Add build tests * Try ts setup again * Try quoting path * Further migrate mac scripts to align with linux scripts * print pwd * Fix changeset and remove unneeded env vars * Ignore return code * fix missing current directory * Fix project path * pwd * Remove project path * Revert to cwd being the workspace folder and pass action folder as an env variable. * Add blank project to use for activation * Add blank project path * Fix build tests * Don't rebuild library on windows * Fix project path windows * Fix platform specific workspace env variable * Fix incorrect variable name * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update .github/workflows/mac-build-tests.yml Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update dist/BlankProject/Packages/packages-lock.json Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/platform-setup/setup-mac.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Fix formatting Co-authored-by: Webber Takken <webber.nl@gmail.com>
2022-02-02 09:15:37 +00:00
# Display results
if [ $BUILD_EXIT_CODE -eq 0 ]; then
echo "Build succeeded";
else
echo "Build failed, with exit code $BUILD_EXIT_CODE";
fi
#
# Permissions
#
# Make a given user owner of all artifacts
if [[ -n "$CHOWN_FILES_TO" ]]; then
chown -R "$CHOWN_FILES_TO" "$BUILD_PATH_FULL"
chown -R "$CHOWN_FILES_TO" "$UNITY_PROJECT_PATH"
fi
# Add read permissions for everyone to all artifacts
chmod -R a+r "$BUILD_PATH_FULL"
chmod -R a+r "$UNITY_PROJECT_PATH"
# Add execute permissions to specific files
if [[ "$BUILD_TARGET" == "StandaloneOSX" ]]; then
OSX_EXECUTABLE_PATH="$BUILD_PATH_FULL/$BUILD_NAME.app/Contents/MacOS"
find "$OSX_EXECUTABLE_PATH" -type f -exec chmod +x {} \;
fi
#
# Results
#
echo ""
echo "###########################"
echo "# Build output #"
echo "###########################"
echo ""
ls -alh "$BUILD_PATH_FULL"