Compare commits

...

6 Commits

Author SHA1 Message Date
Zhou Xinwei
f0e18ea3a5 Fixed addressable build failing on Addressable 1.17.17+ (#262) 2021-05-20 17:51:54 +02:00
Webber Takken
947c8b8e20 Fix typo in issue template (#260) 2021-05-13 14:03:00 +02:00
Webber Takken
a5de621fe2 Ensure proper read permissions and cleanup build.sh (#259)
* Add linux read permissions and cleanup build.sh

* More verbose dirty branch

* Simplify added verbosity
2021-05-10 01:08:53 +02:00
Gaeel Bradshaw-Rodriguez
e31af20466 Chown files to a custom user after building (fix file ownership) (#250)
* Chown files to a custom user after building

* Better describe `chownFilesTo` input

As suggested by @webbertakken: https://github.com/game-ci/unity-builder/pull/250#discussion_r624575666

Co-authored-by: Webber Takken <webber@takken.io>

* Simplify chown step in `build.sh`

Co-authored-by: Webber Takken <webber@takken.io>

Co-authored-by: Webber Takken <webber@takken.io>
2021-05-02 01:23:15 +02:00
Frostebite
a1f68ab26c hotfix - use input parameter instead of env var 2021-05-01 22:26:06 +01:00
Frostebite
e13a9f51e9 hotfix - use input parameter instead of env var 2021-05-01 22:25:10 +01:00
13 changed files with 581 additions and 520 deletions

View File

@@ -1,6 +1,6 @@
---
name: Feature request
about: Suggest an improvement or now feature
about: Suggest an improvement, or a new feature
title: ''
labels: ''
assignees: ''

View File

@@ -106,6 +106,10 @@ inputs:
Parameters must start with a hyphen (-) and may be followed by a value (without hyphen).
Parameters without a value will be considered booleans (with a value of true).
chownFilesTo:
required: false
default: ''
description: 'User and optionally group (user or user:group or uid:gid) to give ownership of the resulting build artifacts'
allowDirtyBuild:
required: false
default: ''

View File

@@ -53,14 +53,11 @@ namespace UnityBuilderAction
if (addressableAssetSettingsType != null)
{
// ReSharper disable once PossibleNullReferenceException, used from try-catch
void CallAddressablesMethod(string methodName, object[] args) => addressableAssetSettingsType
.GetMethod(methodName, BindingFlags.Static | BindingFlags.Public)
.Invoke(null, args);
try
{
CallAddressablesMethod("CleanPlayerContent", new object[] { null });
CallAddressablesMethod("BuildPlayerContent", Array.Empty<object>());
addressableAssetSettingsType.GetMethod("CleanPlayerContent", BindingFlags.Static | BindingFlags.Public)
.Invoke(null, new object[] {null});
addressableAssetSettingsType.GetMethod("BuildPlayerContent", new Type[0]).Invoke(null, new object[0]);
}
catch (Exception e)
{

1008
dist/index.js generated vendored

File diff suppressed because it is too large Load Diff

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

48
dist/steps/build.sh vendored
View File

@@ -65,6 +65,7 @@ fi
#
# Create Android keystore, if needed
#
if [[ -z $ANDROID_KEYSTORE_NAME || -z $ANDROID_KEYSTORE_BASE64 ]]; then
echo "Not creating Android keystore."
else
@@ -73,16 +74,16 @@ else
fi
#
# Display custom parameters
# Pre-build debug information
#
echo "Using custom parameters $CUSTOM_PARAMETERS."
# The build specification below may require Unity 2019.2.11f1 or later (not tested below).
# Reference: https://docs.unity3d.com/2019.3/Documentation/Manual/CommandLineArguments.html
echo ""
echo "###########################"
echo "# Custom parameters #"
echo "###########################"
echo ""
#
# Build info
#
echo "$CUSTOM_PARAMETERS"
echo ""
echo "###########################"
@@ -100,14 +101,20 @@ echo "# Project directory #"
echo "###########################"
echo ""
ls -alh $UNITY_PROJECT_PATH
ls -alh "$UNITY_PROJECT_PATH"
#
# Build
#
echo ""
echo "###########################"
echo "# Building platform #"
echo "# Building project #"
echo "###########################"
echo ""
# Reference: https://docs.unity3d.com/2019.3/Documentation/Manual/CommandLineArguments.html
unity-editor \
-nographics \
-logfile /dev/stdout \
@@ -136,11 +143,24 @@ else
echo "Build failed, with exit code $BUILD_EXIT_CODE";
fi
# Add permissions to make app runnable
#
# 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
ADD_PERMISSIONS_PATH=$BUILD_PATH_FULL/StandaloneOSX.app/Contents/MacOS/*
echo "Making the following path executable: $ADD_PERMISSIONS_PATH"
chmod +x $ADD_PERMISSIONS_PATH
OSX_EXECUTABLE_PATH="$BUILD_PATH_FULL/StandaloneOSX.app/Contents/MacOS/*"
chmod +x "$OSX_EXECUTABLE_PATH"
fi
#
@@ -149,7 +169,7 @@ fi
echo ""
echo "###########################"
echo "# Build directory #"
echo "# Build output #"
echo "###########################"
echo ""

View File

@@ -10,6 +10,7 @@ export const mockGetFromUser = jest.fn().mockResolvedValue({
buildMethod: undefined,
buildVersion: '1.3.37',
customParameters: '',
chownFilesTo: '',
});
export default {

View File

@@ -30,8 +30,8 @@ class AWS {
apk add git-lfs;
apk add jq;
# Get source repo for project to be built and game-ci repo for utilties
git clone https://${process.env.GITHUB_TOKEN}@github.com/${process.env.GITHUB_REPOSITORY}.git ${buildUid}/${repositoryDirectoryName} -q
git clone https://${process.env.GITHUB_TOKEN}@github.com/game-ci/unity-builder.git ${buildUid}/builder -q
git clone https://${buildParameters.githubToken}@github.com/${process.env.GITHUB_REPOSITORY}.git ${buildUid}/${repositoryDirectoryName} -q
git clone https://${buildParameters.githubToken}@github.com/game-ci/unity-builder.git ${buildUid}/builder -q
cd /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/
git checkout $GITHUB_SHA
cd /${efsDirectoryName}/
@@ -149,6 +149,10 @@ class AWS {
name: 'CUSTOM_PARAMETERS',
value: buildParameters.customParameters,
},
{
name: 'CHOWN_FILES_TO',
value: buildParameters.chownFilesTo,
},
{
name: 'BUILD_TARGET',
value: buildParameters.platform,

View File

@@ -33,6 +33,7 @@ class BuildParameters {
androidKeyaliasName: Input.androidKeyaliasName,
androidKeyaliasPass: Input.androidKeyaliasPass,
customParameters: Input.customParameters,
chownFilesTo: Input.chownFilesTo,
remoteBuildCluster: Input.remoteBuildCluster,
awsStackName: Input.awsStackName,
kubeConfig: Input.kubeConfig,

View File

@@ -36,6 +36,7 @@ class Docker {
androidKeyaliasName,
androidKeyaliasPass,
customParameters,
chownFilesTo,
} = parameters;
const command = `docker run \
@@ -62,6 +63,7 @@ class Docker {
--env ANDROID_KEYALIAS_NAME="${androidKeyaliasName}" \
--env ANDROID_KEYALIAS_PASS="${androidKeyaliasPass}" \
--env CUSTOM_PARAMETERS="${customParameters}" \
--env CHOWN_FILES_TO="${chownFilesTo}" \
--env GITHUB_REF \
--env GITHUB_SHA \
--env GITHUB_REPOSITORY \

View File

@@ -85,6 +85,10 @@ class Input {
return core.getInput('customParameters') || '';
}
static get chownFilesTo() {
return core.getInput('chownFilesTo') || '';
}
static get remoteBuildCluster() {
return core.getInput('remoteBuildCluster') || '';
}

View File

@@ -222,6 +222,10 @@ class Kubernetes {
name: 'CUSTOM_PARAMETERS',
value: this.buildParameters.customParameters,
},
{
name: 'CHOWN_FILES_TO',
value: this.buildParameters.chownFilesTo,
},
{
name: 'BUILD_TARGET',
value: this.buildParameters.platform,

View File

@@ -251,8 +251,14 @@ export default class Versioning {
*/
static async isDirty() {
const output = await this.git(['status', '--porcelain']);
const isDirty = output !== '';
return output !== '';
if (isDirty) {
core.warning('Changes were made to the following files and folders:\n');
core.warning(output);
}
return isDirty;
}
/**