Compare commits

...

17 Commits

Author SHA1 Message Date
Webber Takken
9e2a1b2d35 Remove duplicate flag batch-mode (#173) 2020-11-09 20:04:56 +01:00
Webber
471bf0bdf0 Merge branch 'BLaZeKiLL-fix/unity-alias' into main 2020-11-01 15:08:06 +01:00
Webber
6c2fbff839 Merge branch 'fix/unity-alias' of https://github.com/BLaZeKiLL/unity-builder into BLaZeKiLL-fix/unity-alias 2020-11-01 15:06:09 +01:00
Webber Takken
17c28995b2 Update action to use main (#168) 2020-10-29 23:21:48 +01:00
BLaZeKiLL
72ab50499d linux platform added 2020-10-24 13:09:01 +05:30
BLaZeKiLL
9269fba307 image tags updated 2020-10-24 12:13:29 +05:30
BLaZeKiLL
dc54ae10a5 Merge branch 'main' of https://github.com/webbertakken/unity-builder into fix/unity-alias 2020-10-22 23:51:43 +05:30
BLaZeKiLL
5417369dba action build 2020-10-22 23:44:36 +05:30
Devashish Lal
21c985b8e9 added -nographics flag to build.sh (#166) 2020-10-22 16:05:41 +02:00
BLaZeKiLL
483b784253 default docker repository updated to new docker repository 2020-10-22 18:24:42 +05:30
Kai Biermeier
e6d3daedbe revert Fix file ownership issues for self-hosted runners. (#141) (#165) 2020-10-22 10:20:12 +02:00
BLaZeKiLL
046ab3a72d -no-graphics flag removed from build script 2020-10-22 12:27:27 +05:30
BLaZeKiLL
ec0baa5d7b removed redundant xvfb calls (part of the alias) 2020-10-20 17:59:57 +05:30
BLaZeKiLL
5b8f3cf342 refactored to unity-editor alias 2020-10-20 17:29:34 +05:30
Webber Takken
ef74241772 Fix recursive path (#160) 2020-10-12 19:37:26 +02:00
dependabot[bot]
3d7e4a8018 Bump @actions/core from 1.2.4 to 1.2.6 (#158)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.4 to 1.2.6.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-01 21:30:09 +02:00
Webber Takken
91da660786 remove artifacts older than 21 days (#157) 2020-09-28 19:19:18 +02:00
14 changed files with 69 additions and 86 deletions

13
.github/workflows/cleanup.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
name: Delete old artifacts
on:
schedule:
- cron: '30 10 * * *' # every day at 10:30
jobs:
delete-artifacts:
runs-on: ubuntu-latest
steps:
- uses: kolpav/purge-artifacts-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
expire-in: 21 days

View File

@@ -2,7 +2,7 @@ name: Actions
on:
pull_request: {}
push: { branches: [master] }
push: { branches: [main] }
env:
CODECOV_TOKEN: '2f2eb890-30e2-4724-83eb-7633832cf0de'

View File

@@ -1,10 +1,6 @@
ARG IMAGE
FROM $IMAGE
ARG UNAME=runner
ARG UID=1000
ARG GID=1000
LABEL "com.github.actions.name"="Unity - Builder"
LABEL "com.github.actions.description"="Build Unity projects for different platforms."
LABEL "com.github.actions.icon"="box"
@@ -14,15 +10,9 @@ LABEL "repository"="http://github.com/webbertakken/unity-actions"
LABEL "homepage"="http://github.com/webbertakken/unity-actions"
LABEL "maintainer"="Webber Takken <webber@takken.io>"
RUN bash -c 'mkdir -p /github/{home,workflow,workspace}' && chown $UID:$GID -R /github/
RUN getent group $GID || groupadd -g $GID $UNAME
RUN id -u $UID &>/dev/null || useradd -m -u $UID -g $GID -s /bin/bash -d /github/home $UNAME
ADD default-build-script /UnityBuilderAction
ADD steps /steps
RUN chmod -R +x /steps
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
USER $UID:$GID

File diff suppressed because one or more lines are too long

21
action/steps/activate.sh Normal file → Executable file
View File

@@ -24,9 +24,7 @@ if [[ -n "$UNITY_LICENSE" ]] || [[ -n "$UNITY_LICENSE_FILE" ]]; then
fi
# Activate license
ACTIVATION_OUTPUT=$(xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' \
/opt/Unity/Editor/Unity \
-batchmode \
ACTIVATION_OUTPUT=$(unity-editor \
-nographics \
-logFile /dev/stdout \
-quit \
@@ -63,15 +61,14 @@ elif [[ -n "$UNITY_SERIAL" && -n "$UNITY_EMAIL" && -n "$UNITY_PASSWORD" ]]; then
echo "Requesting activation (professional license)"
# Activate license
xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' \
/opt/Unity/Editor/Unity \
-batchmode \
-nographics \
-logFile /dev/stdout \
-quit \
-serial "$UNITY_SERIAL" \
-username "$UNITY_EMAIL" \
-password "$UNITY_PASSWORD"
unity-editor \
-batchmode \
-nographics \
-logFile /dev/stdout \
-quit \
-serial "$UNITY_SERIAL" \
-username "$UNITY_EMAIL" \
-password "$UNITY_PASSWORD"
# Store the exit code from the verify command
UNITY_EXIT_CODE=$?

37
action/steps/build.sh Normal file → Executable file
View File

@@ -48,7 +48,7 @@ if [ -z "$BUILD_METHOD" ]; then
# 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 "/UnityBuilderAction/Assets/Editor" "$UNITY_PROJECT_PATH/Assets/Editor/"
cp -R "/UnityBuilderAction/Assets/Editor/" "$UNITY_PROJECT_PATH/Assets/Editor/"
# Set the Build method to that of UnityBuilder Action
BUILD_METHOD="UnityBuilderAction.Builder.BuildProject"
# Verify recursive paths
@@ -108,24 +108,23 @@ echo "# Building platform #"
echo "###########################"
echo ""
xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' \
/opt/Unity/Editor/Unity \
-batchmode \
-logfile /dev/stdout \
-quit \
-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" \
$CUSTOM_PARAMETERS
unity-editor \
-nographics \
-logfile /dev/stdout \
-quit \
-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" \
$CUSTOM_PARAMETERS
# Catch exit code
BUILD_EXIT_CODE=$?

12
action/steps/return_license.sh Normal file → Executable file
View File

@@ -6,11 +6,9 @@ if [[ -n "$UNITY_SERIAL" ]]; then
#
# This will return the license that is currently in use.
#
xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' \
/opt/Unity/Editor/Unity \
-batchmode \
-nographics \
-logFile /dev/stdout \
-quit \
-returnlicense
unity-editor \
-nographics \
-logFile /dev/stdout \
-quit \
-returnlicense
fi

View File

@@ -14,7 +14,7 @@
"test": "jest"
},
"dependencies": {
"@actions/core": "^1.2.4",
"@actions/core": "^1.2.6",
"@actions/exec": "1.0.4",
"@actions/github": "^2.1.1",
"base-64": "^0.1.0",

View File

@@ -16,13 +16,7 @@ async function action() {
} else {
// Build docker image
// TODO: No image required (instead use a version published to dockerhub for the action, supply credentials for github cloning)
const builtImage = await Docker.build({
path: actionFolder,
dockerfile,
baseImage,
uid: buildParameters.uid,
gid: buildParameters.gid,
});
const builtImage = await Docker.build({ path: actionFolder, dockerfile, baseImage });
await Docker.run(builtImage, { workspace, ...buildParameters });
}

View File

@@ -1,4 +1,3 @@
import os from 'os';
import AndroidVersioning from './android-versioning';
import Input from './input';
import Platform from './platform';
@@ -21,13 +20,10 @@ class BuildParameters {
Input.androidVersionCode,
);
const { uid, gid } = os.userInfo();
return {
version: Input.unityVersion,
customImage: Input.customImage,
uid,
gid,
runnerTempPath: process.env.RUNNER_TEMP,
platform: Input.targetPlatform,
projectPath: Input.projectPath,

View File

@@ -1,18 +1,15 @@
import fs from 'fs';
import { exec } from '@actions/exec';
import ImageTag from './image-tag';
class Docker {
static async build(buildParameters, silent = false) {
const { path, dockerfile, baseImage, uid, gid } = buildParameters;
const { path, dockerfile, baseImage } = buildParameters;
const { version, platform } = baseImage;
const tag = new ImageTag({ repository: '', name: 'unity-builder', version, platform });
const command = `docker build ${path} \
--file ${dockerfile} \
--build-arg IMAGE=${baseImage} \
--build-arg UID=${uid} \
--build-arg GID=${gid} \
--tag ${tag}`;
await exec(command, undefined, { silent });
@@ -86,9 +83,6 @@ class Docker {
--volume "${workspace}":"/github/workspace" \
${image}`;
fs.mkdirSync(`${runnerTempPath}/_github_home`, { recursive: true });
fs.mkdirSync(`${runnerTempPath}/_github_workflow`, { recursive: true });
await exec(command, undefined, { silent });
}
}

View File

@@ -4,8 +4,8 @@ import Platform from './platform';
class ImageTag {
constructor(imageProperties) {
const {
repository = 'gableroux',
name = 'unity3d',
repository = 'unityci',
name = 'editor',
version = '2019.2.11f1',
platform,
customImage,
@@ -36,8 +36,9 @@ class ImageTag {
return {
generic: '',
webgl: 'webgl',
mac: 'mac',
windows: 'windows',
mac: 'mac-mono',
windows: 'windows-mono',
linux: 'base',
android: 'android',
ios: 'ios',
facebook: 'facebook',
@@ -45,14 +46,14 @@ class ImageTag {
}
static get targetPlatformToImageSuffixMap() {
const { generic, webgl, mac, windows, android, ios, facebook } = ImageTag.imageSuffixes;
const { generic, webgl, mac, windows, linux, android, ios, facebook } = ImageTag.imageSuffixes;
// @see: https://docs.unity3d.com/ScriptReference/BuildTarget.html
return {
[Platform.types.StandaloneOSX]: mac,
[Platform.types.StandaloneWindows]: windows,
[Platform.types.StandaloneWindows64]: windows,
[Platform.types.StandaloneLinux64]: windows,
[Platform.types.StandaloneLinux64]: linux,
[Platform.types.iOS]: ios,
[Platform.types.Android]: android,
[Platform.types.WebGL]: webgl,
@@ -87,7 +88,7 @@ class ImageTag {
return this.customImage;
}
return `${image}:${tag}`;
return `${image}:${tag}-0`; // '0' here represents the docker repo version
}
}

View File

@@ -10,9 +10,9 @@ describe('UnityImageVersion', () => {
};
const defaults = {
repository: 'gableroux',
name: 'unity3d',
image: 'gableroux/unity3d',
repository: 'unityci',
name: 'editor',
image: 'unityci/editor',
};
describe('constructor', () => {
@@ -49,7 +49,7 @@ describe('UnityImageVersion', () => {
it('returns the correct version', () => {
const image = new ImageTag({ version: '2099.1.1111', platform: some.platform });
expect(image.toString()).toStrictEqual(`${defaults.image}:2099.1.1111`);
expect(image.toString()).toStrictEqual(`${defaults.image}:2099.1.1111-0`);
});
it('returns customImage if given', () => {
const image = new ImageTag({
@@ -64,13 +64,13 @@ describe('UnityImageVersion', () => {
it('returns the specific build platform', () => {
const image = new ImageTag({ version: '2019.2.11f1', platform: 'WebGL' });
expect(image.toString()).toStrictEqual(`${defaults.image}:2019.2.11f1-webgl`);
expect(image.toString()).toStrictEqual(`${defaults.image}:2019.2.11f1-webgl-0`);
});
it('returns no specific build platform for generic targetPlatforms', () => {
const image = new ImageTag({ platform: 'NoTarget' });
expect(image.toString()).toStrictEqual(`${defaults.image}:2019.2.11f1`);
expect(image.toString()).toStrictEqual(`${defaults.image}:2019.2.11f1-0`);
});
});
});

View File

@@ -2,9 +2,10 @@
# yarn lockfile v1
"@actions/core@^1.2.4":
version "1.2.4"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.4.tgz#96179dbf9f8d951dd74b40a0dbd5c22555d186ab"
"@actions/core@^1.2.6":
version "1.2.6"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.6.tgz#a78d49f41a4def18e88ce47c2cac615d5694bf09"
integrity sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==
"@actions/exec@1.0.4":
version "1.0.4"