| 
									
										
										
										
											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" | 
					
						
							| 
									
										
										
										
											2023-02-10 14:04:05 +00:00
										 |  |  |   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" | 
					
						
							| 
									
										
										
										
											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 \
 | 
					
						
							| 
									
										
										
										
											2023-02-14 05:07:10 +00:00
										 |  |  |   -logFile - \
 | 
					
						
							| 
									
										
										
										
											2022-02-02 09:15:37 +00:00
										 |  |  |   -quit \
 | 
					
						
							|  |  |  |   -batchmode \
 | 
					
						
							|  |  |  |   -nographics \
 | 
					
						
							| 
									
										
										
										
											2022-04-11 20:22:52 +00:00
										 |  |  |   -username "$UNITY_EMAIL" \
 | 
					
						
							|  |  |  |   -password "$UNITY_PASSWORD" \
 | 
					
						
							| 
									
										
										
										
											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" \
 | 
					
						
							| 
									
										
										
										
											2023-02-14 05:07:10 +00:00
										 |  |  |   -androidExportType "$ANDROID_EXPORT_TYPE" \
 | 
					
						
							|  |  |  |   -androidSymbolType "$ANDROID_SYMBOL_TYPE" \
 | 
					
						
							|  |  |  |   $CUSTOM_PARAMETERS | 
					
						
							| 
									
										
										
										
											2022-02-02 09:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Catch exit code | 
					
						
							|  |  |  | BUILD_EXIT_CODE=$? | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-28 01:02:18 +00:00
										 |  |  | # Display logs | 
					
						
							|  |  |  | cat "$UNITY_PROJECT_PATH/out.log" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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" |