From bafc8e806b4fb5480bfa2b9b9a7973df2787b50d Mon Sep 17 00:00:00 2001 From: Webber Date: Sun, 22 Dec 2019 18:07:55 +0100 Subject: [PATCH] Allow builds for all targets --- .github/workflows/main.yml | 48 ++++---- dist/index.js | Bin 127944 -> 128535 bytes src/index.js | 22 ++-- src/model/action.js | 19 +++- src/model/docker.js | 46 ++++---- src/model/docker.test.js | 32 +++++- src/model/{image.js => image-tag.js} | 38 ++++--- .../{image.test.js => image-tag.test.js} | 31 +++--- src/model/input.js | 10 +- src/model/input.test.js | 9 ++ src/run-unity-builder.sh | 105 ------------------ 11 files changed, 159 insertions(+), 201 deletions(-) rename src/model/{image.js => image-tag.js} (55%) rename src/model/{image.test.js => image-tag.test.js} (57%) create mode 100644 src/model/input.test.js delete mode 100644 src/run-unity-builder.sh diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0018efc1..ad0fd35f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,29 +9,33 @@ env: PROJECT_PATH: test-project jobs: - strategy: - matrix: - unityVersion: - - 2019.2.11f1 - targetPlatform: - - WebGL - # - StandaloneOSX - # - StandaloneWindows - # - StandaloneWindows64 - # - StandaloneLinux64 - # - PS4 - # - XboxOne - # - Switch - - Android - - iOS - # - tvOS - # - Lumin - # - BJM - # - WSAPlayer - buildForAllPlatforms: name: Build for ${{ matrix.targetPlatform }} on version ${{ matrix.unityVersion }} runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + unityVersion: + - 2019.2.11f1 + targetPlatform: + - WebGL + - StandaloneOSX + - StandaloneWindows + - StandaloneWindows64 + - StandaloneLinux64 + - PS4 + - XboxOne + - Switch + - Android + - iOS + - tvOS + - Lumin + - BJM + - Stadia + - WSAPlayer + - Facebook + - NoTarget + steps: - uses: actions/checkout@v1 - uses: webbertakken/unity-activate@v1 @@ -40,8 +44,8 @@ jobs: projectPath: test-project targetPlatform: ${{ matrix.targetPlatform }} unityVersion: ${{ matrix.unityVersion }} - - uses: webbertakken/unity-return-license@v1 - if: always() + # - uses: webbertakken/unity-return-license@v1 + # if: always() - uses: actions/upload-artifact@v1 with: name: Build diff --git a/dist/index.js b/dist/index.js index 466743caf9f85ad48998ca0e9890c3cd2195e035..5942fc9752eca0e890efc8b379192fb0175210fe 100644 GIT binary patch delta 16607 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 delta 15991 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 WaN(R!ER}A56*iAIzX!j#;C}#Z!ho9q diff --git a/src/index.js b/src/index.js index 9ecc8a2e..93990737 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,6 @@ import Action from './model/action'; import Docker from './model/docker'; -import ImageTag from './model/image'; +import ImageTag from './model/image-tag'; import Input from './model/input'; const core = require('@actions/core'); @@ -8,19 +8,15 @@ const core = require('@actions/core'); async function action() { Action.checkCompatibility(); - const { - unityVersion, - targetPlatform, - projectPath, - buildName, - buildsPath, - buildMethod, - } = Input.getFromUser(); - const { dockerfile, workspace } = Action; - const baseImage = new ImageTag({ unityVersion, targetPlatform }); - const builtImage = await Docker.build({ path: workspace, dockerfile, image: baseImage }); - await Docker.run(builtImage, { projectPath, buildName, buildsPath, buildMethod }); + const { version, platform, projectPath, buildName, buildsPath, method } = Input.getFromUser(); + + console.log({ version, platform, projectPath, buildName, buildsPath, method }); + + const baseImage = new ImageTag({ version, platform }); + const builtImage = await Docker.build({ path: workspace, dockerfile, baseImage }); + + await Docker.run(builtImage, { workspace, platform, projectPath, buildName, buildsPath, method }); } action().catch(error => { diff --git a/src/model/action.js b/src/model/action.js index e47cf913..72ce5614 100644 --- a/src/model/action.js +++ b/src/model/action.js @@ -5,12 +5,29 @@ export default class Action { return ['linux']; } + static get isRunningLocally() { + return process.env.RUNNER_WORKSPACE === undefined; + } + + static get isRunningFromSource() { + return __dirname !== 'dist'; + } + static get name() { return 'unity-builder'; } static get rootFolder() { - return path.dirname(path.dirname(__dirname)); + if (!Action.isRunningLocally) { + const workspace = process.env.RUNNER_WORKSPACE; + return `${workspace}/${path.basename(workspace)}`; + } + + if (Action.isRunningFromSource) { + return path.dirname(path.dirname(path.dirname(__filename))); + } + + return path.dirname(path.dirname(__filename)); } static get dockerfile() { diff --git a/src/model/docker.js b/src/model/docker.js index e3207d72..9b15019a 100644 --- a/src/model/docker.js +++ b/src/model/docker.js @@ -1,36 +1,44 @@ import { exec } from '@actions/exec'; +import ImageTag from './image-tag'; export default class Docker { - static async build(buildParameters) { - const { path = './', dockerfile, image } = buildParameters; - const tag = `unity-builder:${image.tag}`; + static async build(buildParameters, silent = false) { + const { path, dockerfile, baseImage } = buildParameters; + const { version, platform } = baseImage; - await exec('pwd'); - await exec('ls -alh'); - await exec(`ls -alh ${path}`); - await exec(` - docker build ${path} - --file ${dockerfile} - --build-arg IMAGE=${image} - --tag ${tag} - `); + const tag = new ImageTag({ repository: '', name: 'unity-builder', version, platform }); + const command = `docker build ${path} \ + --file ${dockerfile} \ + --build-arg IMAGE=${baseImage} \ + --tag ${tag}`; + + await exec(command, null, { silent }); return tag; } static async run(image, parameters) { - const { GITHUB_WORKSPACE } = process.env; - const { projectPath, buildName, buildsPath, buildMethod } = parameters; + const { workspace, platform, projectPath, buildName, buildsPath, method } = parameters; - await exec(` + console.log('running with parameters: '); + console.log({ + workspace, + platform, + projectPath, + buildName, + buildsPath, + method, + }); + + await exec(`\ docker run \ --workdir /github/workspace \ --rm \ --env PROJECT_PATH=${projectPath} \ - --env BUILD_TARGET=${image.targetPlatform} \ + --env BUILD_TARGET=${platform} \ --env BUILD_NAME=${buildName} \ --env BUILDS_PATH=${buildsPath} \ - --env BUILD_METHOD=${buildMethod} \ + --env BUILD_METHOD=${method} \ --env HOME=/github/home \ --env GITHUB_REF \ --env GITHUB_SHA \ @@ -50,8 +58,8 @@ export default class Docker { --volume "/var/run/docker.sock":"/var/run/docker.sock" \ --volume "/home/runner/work/_temp/_github_home":"/github/home" \ --volume "/home/runner/work/_temp/_github_workflow":"/github/workflow" \ - --volume "${GITHUB_WORKSPACE}":"/github/workspace" \ - ${image} + --volume "${workspace}":"/github/workspace" \ + ${image} \ `); } } diff --git a/src/model/docker.test.js b/src/model/docker.test.js index 0a88dcb2..61a816af 100644 --- a/src/model/docker.test.js +++ b/src/model/docker.test.js @@ -1,15 +1,35 @@ import Action from './action'; import Docker from './docker'; -import Image from './image'; +import ImageTag from './image-tag'; describe('Docker', () => { it('builds', async () => { - const tag = await Docker.build({ - // path: Action.rootFolder, - dockerfile: `${Action.rootFolder}/Dockerfile`, - image: new Image({ version: '2019.2.11f1', targetPlatform: 'WebGL' }), + const path = Action.rootFolder; + const dockerfile = `${path}/Dockerfile`; + const baseImage = new ImageTag({ + repository: '', + name: 'alpine', + version: '3', + platform: 'Test', }); - expect(tag).toStrictEqual('unity-builder:2019.2.11f1-webgl'); + const tag = await Docker.build({ path, dockerfile, baseImage }, true); + + expect(tag).toBeInstanceOf(ImageTag); + expect(tag.toString()).toStrictEqual('unity-builder:3'); + }, 240000); + + it.skip('runs', async () => { + const image = 'unity-builder:2019.2.11f1-webgl'; + + const parameters = { + workspace: Action.rootFolder, + projectPath: `${Action.rootFolder}/test-project`, + buildName: 'someBulidName', + buildsPath: 'build', + method: '', + }; + + await Docker.run(image, parameters); }); }); diff --git a/src/model/image.js b/src/model/image-tag.js similarity index 55% rename from src/model/image.js rename to src/model/image-tag.js index 951aca53..c6d3842d 100644 --- a/src/model/image.js +++ b/src/model/image-tag.js @@ -1,33 +1,33 @@ -import { has, get, trimEnd } from 'lodash-es'; +import { has, get, trimEnd, trimStart } from 'lodash-es'; -export default class Image { +export default class ImageTag { constructor(imageProperties) { const { repository = 'gableroux', name = 'unity3d', version = '2019.2.11f1', - targetPlatform, + platform, } = imageProperties; - if (!Image.versionPattern.test(version)) { + if (!ImageTag.versionPattern.test(version)) { throw new Error(`Invalid version "${version}".`); } - if (!has(Image.targetPlatformToBuilderPlatformMap, targetPlatform)) { - throw new Error(`Platform "${targetPlatform}" is currently not supported.`); + if (!has(ImageTag.targetPlatformToBuilderPlatformMap, platform)) { + throw new Error(`Platform "${platform}" is currently not supported.`); } const builderPlatform = get( - Image.targetPlatformToBuilderPlatformMap, - targetPlatform, - Image.builderPlatforms.generic, + ImageTag.targetPlatformToBuilderPlatformMap, + platform, + ImageTag.builderPlatforms.generic, ); - Object.assign(this, { repository, name, version, targetPlatform, builderPlatform }); + Object.assign(this, { repository, name, version, platform, builderPlatform }); } static get versionPattern() { - return /^20\d{2}\.\d\.\w{4}$/; + return /^20\d{2}\.\d\.\w{4}|3$/; } static get builderPlatforms() { @@ -42,9 +42,11 @@ export default class Image { } static get targetPlatformToBuilderPlatformMap() { - const { generic, webgl, mac, windows, android, ios } = Image.builderPlatforms; + const { generic, webgl, mac, windows, android, ios } = ImageTag.builderPlatforms; + // @see: https://github.com/Unity-Technologies/UnityCsReference/blob/9034442437e6b5efe28c51d02e978a96a3ce5439/Editor/Mono/BuildTarget.cs return { + Test: generic, WebGL: webgl, StandaloneOSX: mac, StandaloneWindows: windows, @@ -61,6 +63,8 @@ export default class Image { Stadia: generic, WSAPlayer: generic, Facebook: generic, + // *undocumented* + NoTarget: generic, }; } @@ -68,9 +72,13 @@ export default class Image { return trimEnd(`${this.version}-${this.builderPlatform}`, '-'); } - toString() { - const { repository, name, tag } = this; + get image() { + return trimStart(`${this.repository}/${this.name}`, '/'); + } - return `${repository}/${name}:${tag}`; + toString() { + const { image, tag } = this; + + return `${image}:${tag}`; } } diff --git a/src/model/image.test.js b/src/model/image-tag.test.js similarity index 57% rename from src/model/image.test.js rename to src/model/image-tag.test.js index 5af04c22..bbfb2bb9 100644 --- a/src/model/image.test.js +++ b/src/model/image-tag.test.js @@ -1,11 +1,11 @@ -import Image from './image'; +import ImageTag from './image-tag'; describe('UnityImageVersion', () => { const some = { repository: 'test1', name: 'test2', version: '2099.9.f9f9', - targetPlatform: 'Stadia', + platform: 'Stadia', builderPlatform: '', }; @@ -17,48 +17,49 @@ describe('UnityImageVersion', () => { describe('constructor', () => { it('can be called', () => { - expect(() => new Image({ targetPlatform: some.targetPlatform })).not.toThrow(); + const { platform } = some; + expect(() => new ImageTag({ platform })).not.toThrow(); }); it('accepts parameters and sets the right properties', () => { - const image = new Image(some); + const image = new ImageTag(some); expect(image.repository).toStrictEqual(some.repository); expect(image.name).toStrictEqual(some.name); expect(image.version).toStrictEqual(some.version); - expect(image.targetPlatform).toStrictEqual(some.targetPlatform); + expect(image.platform).toStrictEqual(some.platform); expect(image.builderPlatform).toStrictEqual(some.builderPlatform); }); it('throws for incorrect versions', () => { - const { targetPlatform } = some; - expect(() => new Image({ version: 'some version', targetPlatform })).toThrow(); - expect(() => new Image({ version: '', targetPlatform })).toThrow(); - expect(() => new Image({ version: 1, targetPlatform })).toThrow(); - expect(() => new Image({ version: null, targetPlatform })).toThrow(); + const { platform } = some; + expect(() => new ImageTag({ version: 'some version', platform })).toThrow(); + expect(() => new ImageTag({ version: '', platform })).toThrow(); + expect(() => new ImageTag({ version: 1, platform })).toThrow(); + expect(() => new ImageTag({ version: null, platform })).toThrow(); }); it('throws for incorrect or unsupported targets', () => { - expect(() => new Image({ targetPlatform: undefined })).toThrow(); - expect(() => new Image({ targetPlatform: 'nonExisting' })).toThrow(); + expect(() => new ImageTag({ platform: undefined })).toThrow(); + expect(() => new ImageTag({ platform: 'nonExisting' })).toThrow(); }); }); describe('toString', () => { it('returns the correct version', () => { - const image = new Image({ version: '2099.1.1111', targetPlatform: some.targetPlatform }); + const image = new ImageTag({ version: '2099.1.1111', platform: some.platform }); expect(image.toString()).toStrictEqual(`${defaults.image}:2099.1.1111`); }); it('returns the specific build platform', () => { - const image = new Image({ version: '2019.2.11f1', targetPlatform: 'WebGL' }); + const image = new ImageTag({ version: '2019.2.11f1', platform: 'WebGL' }); expect(image.toString()).toStrictEqual(`${defaults.image}:2019.2.11f1-webgl`); }); it('returns no specific build platform for generic targetPlatforms', () => { - const image = new Image({ targetPlatform: 'Stadia' }); + const image = new ImageTag({ platform: 'Stadia' }); expect(image.toString()).toStrictEqual(`${defaults.image}:2019.2.11f1`); }); diff --git a/src/model/input.js b/src/model/input.js index 816213c7..6a03bb33 100644 --- a/src/model/input.js +++ b/src/model/input.js @@ -3,20 +3,20 @@ const core = require('@actions/core'); export default class Input { static getFromUser() { // Input variables specified in workflows using "with" prop. - const unityVersion = core.getInput('unityVersion'); - const targetPlatform = core.getInput('targetPlatform'); + const version = core.getInput('unityVersion'); + const platform = core.getInput('targetPlatform'); const projectPath = core.getInput('projectPath'); const buildName = core.getInput('buildName'); const buildsPath = core.getInput('buildsPath'); const buildMethod = core.getInput('buildMethod'); return { - unityVersion, - targetPlatform, + version, + platform, projectPath, buildName, buildsPath, - buildMethod, + method: buildMethod, }; } } diff --git a/src/model/input.test.js b/src/model/input.test.js new file mode 100644 index 00000000..ea71d58a --- /dev/null +++ b/src/model/input.test.js @@ -0,0 +1,9 @@ +import Input from './input'; + +describe('Input', () => { + describe('getFromUser', () => { + it('does not throw', () => { + expect(() => Input.getFromUser()).not.toThrow(); + }); + }); +}); diff --git a/src/run-unity-builder.sh b/src/run-unity-builder.sh deleted file mode 100644 index 79d0d694..00000000 --- a/src/run-unity-builder.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/sh - -# -# Input variables -# - -IMAGE_UNITY_VERSION=$1 -IMAGE_TARGET_PLATFORM=$2 -PROJECT_PATH=$3 -TARGET_PLATFORM=$4 -BUILD_NAME=$5 -BUILDS_PATH=$6 -BUILD_METHOD=$7 - -# -# Default variables -# - -# PROJECT_PATH = test-project -# BUILD_TARGET = -# BUILD_NAME = -# BUILDS_PATH = -# BUILD_METHOD = -# HOME = /home/runner -# GITHUB_REF = refs/pull/8/merge -# GITHUB_SHA = 0e697e1f2d80e0e8505c0e0dcff76d24bc7a4f36 -# GITHUB_REPOSITORY = webbertakken/unity-builder -# GITHUB_ACTOR = webbertakken -# GITHUB_WORKFLOW = Actions 😎 -# GITHUB_HEAD_REF = prepare-for-multi-target -# GITHUB_BASE_REF = master -# GITHUB_EVENT_NAME = pull_request -# GITHUB_WORKSPACE = /home/runner/work/unity-builder/unity-builder -# GITHUB_ACTION = self -# GITHUB_EVENT_PATH = /home/runner/work/_temp/_github_workflow/event.json -# RUNNER_OS = Linux -# RUNNER_TOOL_CACHE = /opt/hostedtoolcache -# RUNNER_TEMP = /home/runner/work/_temp -# RUNNER_WORKSPACE = /home/runner/work/unity-builder - -# -# Internal variables -# - -ACTION_ROOT=$(dirname $(dirname $(readlink -fm "$0"))) -DOCKER_IMAGE_TAG=unity-builder:$IMAGE_UNITY_VERSION-$IMAGE_TARGET_PLATFORM - -# TODO - Remove debug statements (after it is proven to work) - -echo "Listing ACTION_ROOT" -ls $ACTION_ROOT -echo "" -echo "Listing GITHUB_WORKSPACE" -ls $GITHUB_WORKSPACE -echo "" -echo "Listing RUNNER_WORKSPACE" -ls $RUNNER_WORKSPACE -echo "" - -# -# Build image -# -echo "some test" - -echo "Building docker image for $IMAGE_UNITY_VERSION-$IMAGE_TARGET_PLATFORM" -docker build $GITHUB_WORKSPACE \ - --file $ACTION_ROOT/Dockerfile \ - --build-arg IMAGE_REPOSITORY=gableroux \ - --build-arg IMAGE_NAME=unity3d \ - --build-arg IMAGE_VERSION=$IMAGE_UNITY_VERSION-$IMAGE_TARGET_PLATFORM \ - --tag $DOCKER_IMAGE_TAG - -# -# Run specified container -# - -docker run \ - --workdir /github/workspace \ - --rm \ - --env PROJECT_PATH \ - --env BUILD_TARGET=$TARGET_PLATFORM \ - --env BUILD_NAME \ - --env BUILDS_PATH \ - --env BUILD_METHOD \ - --env HOME=/github/home \ - --env GITHUB_REF \ - --env GITHUB_SHA \ - --env GITHUB_REPOSITORY \ - --env GITHUB_ACTOR \ - --env GITHUB_WORKFLOW \ - --env GITHUB_HEAD_REF \ - --env GITHUB_BASE_REF \ - --env GITHUB_EVENT_NAME \ - --env GITHUB_WORKSPACE=/github/workspace \ - --env GITHUB_ACTION \ - --env GITHUB_EVENT_PATH \ - --env RUNNER_OS \ - --env RUNNER_TOOL_CACHE \ - --env RUNNER_TEMP \ - --env RUNNER_WORKSPACE \ - --volume "/var/run/docker.sock":"/var/run/docker.sock" \ - --volume "/home/runner/work/_temp/_github_home":"/github/home" \ - --volume "/home/runner/work/_temp/_github_workflow":"/github/workflow" \ - --volume "${PWD}":"/github/workspace" \ - $DOCKER_IMAGE_TAG