123 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # Run in ACTIVATE_LICENSE_PATH directory
 | |
| echo "Changing to \"$ACTIVATE_LICENSE_PATH\" directory."
 | |
| pushd "$ACTIVATE_LICENSE_PATH"
 | |
| 
 | |
| if [[ -n "$UNITY_LICENSE" ]] || [[ -n "$UNITY_LICENSE_FILE" ]]; then
 | |
|   #
 | |
|   # PERSONAL LICENSE MODE
 | |
|   #
 | |
|   # This will activate Unity, using a license file
 | |
|   #
 | |
|   # Note that this is the ONLY WAY for PERSONAL LICENSES in 2020.
 | |
|   #   * See for more details: https://gitlab.com/gableroux/unity3d-gitlab-ci-example/issues/5#note_72815478
 | |
|   #
 | |
|   # The license file can be acquired using `webbertakken/request-manual-activation-file` action.
 | |
|   echo "Requesting activation (personal license)"
 | |
| 
 | |
|   # Set the license file path
 | |
|   FILE_PATH=UnityLicenseFile.ulf
 | |
| 
 | |
|   if [[ -n "$UNITY_LICENSE" ]]; then
 | |
|     # Copy license file from Github variables
 | |
|     echo "$UNITY_LICENSE" | tr -d '\r' > $FILE_PATH
 | |
|   elif [[ -n "$UNITY_LICENSE_FILE" ]]; then
 | |
|     # Copy license file from file system
 | |
|     cat "$UNITY_LICENSE_FILE" | tr -d '\r' > $FILE_PATH
 | |
|   fi
 | |
| 
 | |
|   # Activate license
 | |
|   ACTIVATION_OUTPUT=$(unity-editor \
 | |
|       -logFile /dev/stdout \
 | |
|       -quit \
 | |
|       -manualLicenseFile $FILE_PATH)
 | |
| 
 | |
|   # Store the exit code from the verify command
 | |
|   UNITY_EXIT_CODE=$?
 | |
| 
 | |
|   # The exit code for personal activation is always 1;
 | |
|   # Determine whether activation was successful.
 | |
|   #
 | |
|   # Successful output should include the following:
 | |
|   #
 | |
|   #   "LICENSE SYSTEM [2020120 18:51:20] Next license update check is after 2019-11-25T18:23:38"
 | |
|   #
 | |
|   ACTIVATION_SUCCESSFUL=$(echo $ACTIVATION_OUTPUT | grep 'Next license update check is after' | wc -l)
 | |
| 
 | |
|   # Set exit code to 0 if activation was successful
 | |
|   if [[ $ACTIVATION_SUCCESSFUL -eq 1 ]]; then
 | |
|     UNITY_EXIT_CODE=0
 | |
|   fi;
 | |
| 
 | |
|   # Remove license file
 | |
|   rm -f $FILE_PATH
 | |
| 
 | |
| elif [[ -n "$UNITY_SERIAL" && -n "$UNITY_EMAIL" && -n "$UNITY_PASSWORD" ]]; then
 | |
|   #
 | |
|   # PROFESSIONAL (SERIAL) LICENSE MODE
 | |
|   #
 | |
|   # This will activate unity, using the activating process.
 | |
|   #
 | |
|   # Note: This is the preferred way for PROFESSIONAL LICENSES.
 | |
|   #
 | |
|   echo "Requesting activation (professional license)"
 | |
| 
 | |
|   # Activate license
 | |
|   unity-editor \
 | |
|     -logFile /dev/stdout \
 | |
|     -quit \
 | |
|     -serial "$UNITY_SERIAL" \
 | |
|     -username "$UNITY_EMAIL" \
 | |
|     -password "$UNITY_PASSWORD"
 | |
| 
 | |
|   # Store the exit code from the verify command
 | |
|   UNITY_EXIT_CODE=$?
 | |
| 
 | |
| elif [[ -n "$UNITY_LICENSING_SERVER" ]]; then
 | |
|   #
 | |
|   # Custom Unity License Server
 | |
|   #
 | |
|   echo "Adding licensing server config"
 | |
| 
 | |
|   /opt/unity/Editor/Data/Resources/Licensing/Client/Unity.Licensing.Client --acquire-floating > license.txt #is this accessible in a env variable?
 | |
|   PARSEDFILE=$(grep -oP '\".*?\"' < license.txt | tr -d '"')
 | |
|   export FLOATING_LICENSE
 | |
|   FLOATING_LICENSE=$(sed -n 2p <<< "$PARSEDFILE")
 | |
|   FLOATING_LICENSE_TIMEOUT=$(sed -n 4p <<< "$PARSEDFILE")
 | |
| 
 | |
|   echo "Acquired floating license: \"$FLOATING_LICENSE\" with timeout $FLOATING_LICENSE_TIMEOUT"
 | |
|   # Store the exit code from the verify command
 | |
|   UNITY_EXIT_CODE=$?
 | |
| else
 | |
|   #
 | |
|   # NO LICENSE ACTIVATION STRATEGY MATCHED
 | |
|   #
 | |
|   # This will exit since no activation strategies could be matched.
 | |
|   #
 | |
|   echo "License activation strategy could not be determined."
 | |
|   echo ""
 | |
|   echo "Visit https://game.ci/docs/github/getting-started for more"
 | |
|   echo "details on how to set up one of the possible activation strategies."
 | |
| 
 | |
|   # Immediately exit as no UNITY_EXIT_CODE can be derrived.
 | |
|   exit 1;
 | |
| 
 | |
| fi
 | |
| 
 | |
| #
 | |
| # Display information about the result
 | |
| #
 | |
| if [ $UNITY_EXIT_CODE -eq 0 ]; then
 | |
|   # Activation was a success
 | |
|   echo "Activation complete."
 | |
| else
 | |
|   # Activation failed so exit with the code from the license verification step
 | |
|   echo "Unclassified error occured while trying to activate license."
 | |
|   echo "Exit code was: $UNITY_EXIT_CODE"
 | |
|   exit $UNITY_EXIT_CODE
 | |
| fi
 | |
| 
 | |
| # Return to previous working directory
 | |
| popd
 |