From e73b48fb38a8680778788591f7c9a5e01a4a1237 Mon Sep 17 00:00:00 2001 From: Frostebite Date: Tue, 6 Feb 2024 23:46:31 +0000 Subject: [PATCH] Cloud runner develop - Stabilizes kubernetes provider (#531) * fixes * fixes * fixes * fixes * fixes * check for startup message in workflows * check for startup message in workflows * check for startup message in workflows * check for startup message in workflows * check for startup message in workflows * check for startup message in workflows * Update cloud-runner-ci-pipeline.yml * Update cloud-runner-ci-pipeline.yml * no storage class specified * log file path * log file path * log file path * log file path * log file path * log file path * log file path * log file path * updates * log file path * latest develop * log file path * log file path * Update package.json * log file path * log file path * log file path * log file path * log file path * log file path * log file path * log file path * log file path * log file path * log file path * log file path * log file path * log file path * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * stream logs through standard input and new remote client cli command * update pipeline to use k3s * version: 'latest' * fixes * disable aws pipe for now * disable aws pipe for now * disable aws pipe for now * disable aws pipe for now * disable aws pipe for now * disable aws pipe for now * disable aws pipe for now * disable aws pipe for now * disable aws pipe for now * disable aws pipe for now * push k8s logs to LOG SERVICE IP * push k8s logs to LOG SERVICE IP * push k8s logs to LOG SERVICE IP * push k8s logs to LOG SERVICE IP * push k8s logs to LOG SERVICE IP * push k8s logs to LOG SERVICE IP * push k8s logs to LOG SERVICE IP * push k8s logs to LOG SERVICE IP * tests * tests * tests * tests * tests * tests * tests * tests * tests * tests * tests * tests * tests * tests * tests * tests * tests * podname logs for log service * podname logs for log service * podname logs for log service * podname logs for log service * podname logs for log service * podname logs for log service * podname logs for log service * podname logs for log service * podname logs for log service * hashed logs * hashed logs * hashed logs * hashed logs * hashed logs * hashed logs * no wait, just repeat logs * no wait, just repeat logs * remove typo - double await * test fix - kubernetes - name typo in github yaml * test fix - kubernetes - name typo in github yaml * check missing log file * check missing log file * Push to steam test * Push to steam test * Fix path * k8s reliable log hashing * k8s reliable log hashing * k8s reliable log hashing * hashed logging k8s * hashed logging k8s * hashed logging k8s * hashed logging k8s * hashed logging k8s * hashed logging k8s * Include log chunk when task runner sees log update, clarify if we can pull logs from same line or next line * Include log chunk when task runner sees log update, clarify if we can pull logs from same line or next line * Include log chunk when task runner sees log update, clarify if we can pull logs from same line or next line * Include log chunk when task runner sees log update, clarify if we can pull logs from same line or next line * Include log chunk when task runner sees log update, clarify if we can pull logs from same line or next line * Fix exit flow for k8s job * hash comparison logging for log complete in k8s flow * Interrupt k8s logs when logs found * cleanup async parameter * cleanup async parameter * cleanup async parameter * fixes * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix --- .eslintrc.json | 29 +- .../workflows/cloud-runner-ci-pipeline.yml | 154 ++-- action.yml | 4 +- dist/index.js | Bin 22176823 -> 22181841 bytes dist/index.js.map | Bin 14635097 -> 14653755 bytes dist/platforms/ubuntu/steps/activate.sh | 9 + package.json | 12 +- scripts/game-ci.bat | 15 + src/index.ts | 1 + src/model/cli/cli.ts | 34 +- src/model/cloud-runner/cloud-runner.ts | 31 +- .../cloud-runner/error/cloud-runner-error.ts | 7 +- .../options/cloud-runner-options.ts | 4 +- .../task-definition-formation.ts | 12 +- src/model/cloud-runner/providers/aws/index.ts | 2 - .../cloud-runner/providers/docker/index.ts | 1 - src/model/cloud-runner/providers/k8s/index.ts | 45 +- .../k8s/kubernetes-job-spec-factory.ts | 17 +- .../providers/k8s/kubernetes-role.ts | 53 ++ .../k8s/kubernetes-service-account.ts | 2 +- .../providers/k8s/kubernetes-task-runner.ts | 72 +- .../cloud-runner/providers/local/index.ts | 2 - .../providers/provider-interface.ts | 2 - .../cloud-runner/providers/test/index.ts | 2 - .../cloud-runner/remote-client/caching.ts | 2 +- src/model/cloud-runner/remote-client/index.ts | 70 +- .../remote-client/remote-client-logger.ts | 65 +- .../services/core/cloud-runner-result.ts | 24 + .../services/core/cloud-runner-system.ts | 13 +- .../core/task-parameter-serializer.ts | 3 +- .../services/hooks/container-hook-service.ts | 5 - .../tests/cloud-runner-async-workflow.test.ts | 6 + .../tests/cloud-runner-environment.test.ts | 6 +- .../tests/cloud-runner-github-checks.test.ts | 59 ++ .../tests/cloud-runner-hooks.test.ts | 6 +- .../tests/cloud-runner-image.test.ts | 51 ++ .../tests/cloud-runner-s3-steps.test.ts | 3 +- .../e2e/cloud-runner-end2end-caching.test.ts | 14 +- .../cloud-runner-end2end-retaining.test.ts | 10 +- .../tests/e2e/cloud-runner-kubernetes.test.ts | 56 ++ .../cloud-runner/workflows/async-workflow.ts | 5 + .../workflows/build-automation-workflow.ts | 21 +- src/model/github.ts | 65 +- src/model/image-tag.ts | 15 +- src/model/input.ts | 4 +- .../Settings.json | 12 +- yarn.lock | 700 +++++++++--------- 47 files changed, 1093 insertions(+), 632 deletions(-) create mode 100644 scripts/game-ci.bat create mode 100644 src/model/cloud-runner/providers/k8s/kubernetes-role.ts create mode 100644 src/model/cloud-runner/services/core/cloud-runner-result.ts create mode 100644 src/model/cloud-runner/tests/cloud-runner-github-checks.test.ts create mode 100644 src/model/cloud-runner/tests/cloud-runner-image.test.ts create mode 100644 src/model/cloud-runner/tests/e2e/cloud-runner-kubernetes.test.ts diff --git a/.eslintrc.json b/.eslintrc.json index 7ff0c589..ce2dfb06 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,22 +1,11 @@ { - "plugins": [ - "jest", - "@typescript-eslint", - "prettier", - "unicorn" - ], - "extends": [ - "plugin:unicorn/recommended", - "plugin:github/recommended", - "plugin:prettier/recommended" - ], + "plugins": ["jest", "@typescript-eslint", "prettier", "unicorn"], + "extends": ["plugin:unicorn/recommended", "plugin:github/recommended", "plugin:prettier/recommended"], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": 2020, "sourceType": "module", - "extraFileExtensions": [ - ".mjs" - ], + "extraFileExtensions": [".mjs"], "ecmaFeatures": { "impliedStrict": true }, @@ -33,10 +22,7 @@ // Namespaces or sometimes needed "import/no-namespace": "off", // Properly format comments - "spaced-comment": [ - "error", - "always" - ], + "spaced-comment": ["error", "always"], "lines-around-comment": [ "error", { @@ -71,12 +57,7 @@ // Enforce camelCase "camelcase": "error", // Allow forOfStatements - "no-restricted-syntax": [ - "error", - "ForInStatement", - "LabeledStatement", - "WithStatement" - ], + "no-restricted-syntax": ["error", "ForInStatement", "LabeledStatement", "WithStatement"], // Continue is viable in forOf loops in generators "no-continue": "off", // From experience, named exports are almost always desired. I got tired of this rule diff --git a/.github/workflows/cloud-runner-ci-pipeline.yml b/.github/workflows/cloud-runner-ci-pipeline.yml index efe186b7..bd8969eb 100644 --- a/.github/workflows/cloud-runner-ci-pipeline.yml +++ b/.github/workflows/cloud-runner-ci-pipeline.yml @@ -18,42 +18,37 @@ env: GCP_PROJECT: unitykubernetesbuilder GCP_LOG_FILE: ${{ github.workspace }}/cloud-runner-logs.txt AWS_REGION: eu-west-2 - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: eu-west-2 AWS_STACK_NAME: game-ci-team-pipelines CLOUD_RUNNER_BRANCH: ${{ github.ref }} DEBUG: true - UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} + UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} + UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} PROJECT_PATH: test-project UNITY_VERSION: 2019.3.15f1 USE_IL2CPP: false USE_GKE_GCLOUD_AUTH_PLUGIN: true - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: - smokeTests: - name: Smoke Tests + tests: + name: Tests if: github.event.event_type != 'pull_request_target' runs-on: ubuntu-latest strategy: fail-fast: false matrix: test: - #- 'cloud-runner-async-workflow' + - 'cloud-runner-end2end-locking' + - 'cloud-runner-end2end-caching' + - 'cloud-runner-end2end-retaining' - 'cloud-runner-caching' - # - 'cloud-runner-end2end-caching' - # - 'cloud-runner-end2end-retaining' - 'cloud-runner-environment' + - 'cloud-runner-image' - 'cloud-runner-hooks' - 'cloud-runner-local-persistence' - 'cloud-runner-locking-core' - 'cloud-runner-locking-get-locked' - providerStrategy: - #- aws - - local-docker - #- k8s steps: - name: Checkout (default) uses: actions/checkout@v4 @@ -65,58 +60,85 @@ jobs: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: eu-west-2 - - uses: google-github-actions/auth@v1 - if: matrix.providerStrategy == 'k8s' - with: - credentials_json: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }} - - name: 'Set up Cloud SDK' - if: matrix.providerStrategy == 'k8s' - uses: 'google-github-actions/setup-gcloud@v1.1.0' - - name: Get GKE cluster credentials - if: matrix.providerStrategy == 'k8s' - run: | - export USE_GKE_GCLOUD_AUTH_PLUGIN=True - gcloud components install gke-gcloud-auth-plugin - gcloud container clusters get-credentials $GKE_CLUSTER --zone $GKE_ZONE --project $GKE_PROJECT - run: yarn - run: yarn run test "${{ matrix.test }}" --detectOpenHandles --forceExit --runInBand - timeout-minutes: 35 + timeout-minutes: 60 env: - UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} + UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} + UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} PROJECT_PATH: test-project TARGET_PLATFORM: StandaloneWindows64 cloudRunnerTests: true versioning: None - CLOUD_RUNNER_CLUSTER: ${{ matrix.providerStrategy }} - tests: - # needs: - # - smokeTests - # - buildTargetTests - name: Integration Tests + KUBE_STORAGE_CLASS: local-path + PROVIDER_STRATEGY: local-docker + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: | + docker volume rm $(docker volume ls -qf dangling=true) + docker rmi $(docker images -q -f dangling=true) + docker rm $(docker ps -aqf status=exited) + docker rmi $(docker images -q) + k8sTests: + name: K8s Tests + if: github.event.event_type != 'pull_request_target' + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + test: + # - 'cloud-runner-async-workflow' + - 'cloud-runner-end2end-locking' + - 'cloud-runner-end2end-caching' + - 'cloud-runner-end2end-retaining' + - 'cloud-runner-kubernetes' + - 'cloud-runner-environment' + - 'cloud-runner-github-checks' + steps: + - name: Checkout (default) + uses: actions/checkout@v2 + with: + lfs: false + - run: yarn + - name: actions-k3s + uses: debianmaster/actions-k3s@v1.0.5 + with: + version: 'latest' + - run: yarn run test "${{ matrix.test }}" --detectOpenHandles --forceExit --runInBand + timeout-minutes: 60 + env: + UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} + UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} + PROJECT_PATH: test-project + TARGET_PLATFORM: StandaloneWindows64 + cloudRunnerTests: true + versioning: None + KUBE_STORAGE_CLASS: local-path + PROVIDER_STRATEGY: k8s + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + awsTests: + name: AWS Tests if: github.event.event_type != 'pull_request_target' runs-on: ubuntu-latest strategy: fail-fast: false matrix: - providerStrategy: - - aws - - local-docker - - k8s test: - - 'cloud-runner-async-workflow' - #- 'cloud-runner-caching' - 'cloud-runner-end2end-locking' - 'cloud-runner-end2end-caching' - 'cloud-runner-end2end-retaining' - 'cloud-runner-environment' - #- 'cloud-runner-hooks' - 'cloud-runner-s3-steps' - #- 'cloud-runner-local-persistence' - #- 'cloud-runner-locking-core' - #- 'cloud-runner-locking-get-locked' steps: - name: Checkout (default) - uses: actions/checkout@v4 + uses: actions/checkout@v2 with: lfs: false - name: Configure AWS Credentials @@ -125,29 +147,24 @@ jobs: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: eu-west-2 - - uses: google-github-actions/auth@v1 - if: matrix.providerStrategy == 'k8s' - with: - credentials_json: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }} - - name: 'Set up Cloud SDK' - if: matrix.providerStrategy == 'k8s' - uses: 'google-github-actions/setup-gcloud@v1.1.0' - - name: Get GKE cluster credentials - if: matrix.providerStrategy == 'k8s' - run: | - export USE_GKE_GCLOUD_AUTH_PLUGIN=True - gcloud components install gke-gcloud-auth-plugin - gcloud container clusters get-credentials $GKE_CLUSTER --zone $GKE_ZONE --project $GKE_PROJECT - run: yarn - run: yarn run test "${{ matrix.test }}" --detectOpenHandles --forceExit --runInBand timeout-minutes: 60 env: - UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} + UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} + UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} PROJECT_PATH: test-project TARGET_PLATFORM: StandaloneWindows64 cloudRunnerTests: true versioning: None - PROVIDER_STRATEGY: ${{ matrix.providerStrategy }} + KUBE_STORAGE_CLASS: local-path + PROVIDER_STRATEGY: aws + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + buildTargetTests: name: Local Build Target Tests runs-on: ubuntu-latest @@ -164,7 +181,7 @@ jobs: - StandaloneLinux64 # Build a Linux 64-bit standalone. - WebGL # WebGL. - iOS # Build an iOS player. - - Android # Build an Android .apk. + # - Android # Build an Android .apk. steps: - name: Checkout (default) uses: actions/checkout@v4 @@ -175,7 +192,13 @@ jobs: id: unity-build timeout-minutes: 30 env: - UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} + UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} + UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: cloudRunnerTests: true versioning: None @@ -188,3 +211,8 @@ jobs: name: ${{ matrix.providerStrategy }} Build (${{ matrix.targetPlatform }}) path: ${{ steps.unity-build.outputs.BUILD_ARTIFACT }} retention-days: 14 + - run: | + docker volume rm $(docker volume ls -qf dangling=true) + docker rmi $(docker images -q -f dangling=true) + docker rm $(docker ps -aqf status=exited) + docker rmi $(docker images -q) diff --git a/action.yml b/action.yml index e0ccba40..09f95e08 100644 --- a/action.yml +++ b/action.yml @@ -186,11 +186,11 @@ inputs: description: '[CloudRunner] Either local, k8s or aws can be used to run builds on a remote cluster. Additional parameters must be configured.' - cloudRunnerCpu: + containerCpu: default: '' required: false description: '[CloudRunner] Amount of CPU time to assign the remote build container' - cloudRunnerMemory: + containerMemory: default: '' required: false description: '[CloudRunner] Amount of memory to assign the remote build container' diff --git a/dist/index.js b/dist/index.js index 261824a1f2a5eecf9998a89c63cf19a76150640d..bde8c7636d12988d91f044ca5052e764b9fd6a04 100644 GIT binary patch delta 9059 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 TVm=pjT+|CkLVXK_XZ`;J{ILBx delta 5473 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 Wz-NFnfU|&efb%sg7JmNTJO2kqTW59v delta 57258 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 diff --git a/dist/platforms/ubuntu/steps/activate.sh b/dist/platforms/ubuntu/steps/activate.sh index 9e051249..9566d92d 100755 --- a/dist/platforms/ubuntu/steps/activate.sh +++ b/dist/platforms/ubuntu/steps/activate.sh @@ -1,5 +1,14 @@ #!/usr/bin/env bash +# if blankproject folder doesn't exist create it +if [ ! -d "/BlankProject" ]; then + mkdir /BlankProject +fi +# if blankproject folder doesn't exist create it +if [ ! -d "/BlankProject/Assets" ]; then + mkdir /BlankProject/Assets +fi + if [[ -n "$UNITY_SERIAL" && -n "$UNITY_EMAIL" && -n "$UNITY_PASSWORD" ]]; then # # SERIAL LICENSE MODE diff --git a/package.json b/package.json index 20f041b5..48d3bbaf 100644 --- a/package.json +++ b/package.json @@ -7,14 +7,14 @@ "author": "Webber ", "license": "MIT", "scripts": { - "prepare": "lefthook install && npx husky uninstall -y", + "prepare": "lefthook install", "build": "yarn && tsc && ncc build lib --source-map --license licenses.txt", "lint": "prettier --check \"src/**/*.{js,ts}\" && eslint src/**/*.ts", "format": "prettier --write \"src/**/*.{js,ts}\"", "cli": "yarn ts-node src/index.ts -m cli", - "gcp-secrets-tests": "cross-env providerStrategy=aws cloudRunnerTests=true readInputOverrideCommand=\"gcp-secret-manager\" populateOverride=true readInputFromOverrideList=UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD yarn test -i -t \"cloud runner\"", - "gcp-secrets-cli": "cross-env cloudRunnerTests=true readInputOverrideCommand=\"gcp-secret-manager\" yarn ts-node src/index.ts -m cli --populateOverride true --readInputFromOverrideList UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD", - "aws-secrets-cli": "cross-env cloudRunnerTests=true readInputOverrideCommand=\"aws-secret-manager\" yarn ts-node src/index.ts -m cli --populateOverride true --readInputFromOverrideList UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD", + "gcp-secrets-tests": "cross-env providerStrategy=aws cloudRunnerTests=true inputPullCommand=\"gcp-secret-manager\" populateOverride=true pullInputList=UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD yarn test -i -t \"cloud runner\"", + "gcp-secrets-cli": "cross-env cloudRunnerTests=true USE_IL2CPP=false inputPullCommand=\"gcp-secret-manager\" yarn ts-node src/index.ts -m cli --populateOverride true --pullInputList UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD", + "aws-secrets-cli": "cross-env cloudRunnerTests=true inputPullCommand=\"aws-secret-manager\" yarn ts-node src/index.ts -m cli --populateOverride true --pullInputList UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD", "cli-aws": "cross-env providerStrategy=aws yarn run test-cli", "cli-k8s": "cross-env providerStrategy=k8s yarn run test-cli", "test-cli": "cross-env cloudRunnerTests=true yarn ts-node src/index.ts -m cli --projectPath test-project", @@ -40,9 +40,11 @@ "commander": "^9.0.0", "commander-ts": "^0.2.0", "kubernetes-client": "^9.0.0", + "md5": "^2.3.0", "nanoid": "^3.3.1", "reflect-metadata": "^0.1.13", "semver": "^7.5.2", + "ts-md5": "^1.3.1", "unity-changeset": "^2.0.0", "uuid": "^9.0.0", "yaml": "^2.2.2" @@ -69,7 +71,7 @@ "js-yaml": "^4.1.0", "prettier": "^2.5.1", "ts-jest": "^27.1.3", - "ts-node": "10.4.0", + "ts-node": "10.8.1", "typescript": "4.7.4", "yarn-audit-fix": "^9.3.8" }, diff --git a/scripts/game-ci.bat b/scripts/game-ci.bat new file mode 100644 index 00000000..d727e302 --- /dev/null +++ b/scripts/game-ci.bat @@ -0,0 +1,15 @@ +echo "installing game-ci cli" +if exist %UserProfile%\AppData\LocalLow\game-ci\ ( + echo Installed Updating + git -C %UserProfile%\AppData\LocalLow\game-ci\ fetch + git -C %UserProfile%\AppData\LocalLow\game-ci\ reset --hard + git -C %UserProfile%\AppData\LocalLow\game-ci\ pull + git -C %UserProfile%\AppData\LocalLow\game-ci\ branch +) else ( + echo Not Installed Downloading... + mkdir %UserProfile%\AppData\LocalLow\game-ci\ + git clone https://github.com/game-ci/unity-builder %UserProfile%\AppData\LocalLow\game-ci\ +) + +call yarn --cwd %UserProfile%\AppData\LocalLow\game-ci\ install +call yarn --cwd %UserProfile%\AppData\LocalLow\game-ci\ run gcp-secrets-cli %* --projectPath %cd% --awsStackName game-ci-cli diff --git a/src/index.ts b/src/index.ts index 89db2de3..2d40bd1d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -34,6 +34,7 @@ async function runMain() { }); } else { await CloudRunner.run(buildParameters, baseImage.toString()); + exitCode = 0; } // Set output diff --git a/src/model/cli/cli.ts b/src/model/cli/cli.ts index a2eed108..739154a6 100644 --- a/src/model/cli/cli.ts +++ b/src/model/cli/cli.ts @@ -10,8 +10,6 @@ import { LfsHashing } from '../cloud-runner/services/utility/lfs-hashing'; import { RemoteClient } from '../cloud-runner/remote-client'; import CloudRunnerOptionsReader from '../cloud-runner/options/cloud-runner-options-reader'; import GitHub from '../github'; -import { CloudRunnerFolders } from '../cloud-runner/options/cloud-runner-folders'; -import { CloudRunnerSystem } from '../cloud-runner/services/core/cloud-runner-system'; import { OptionValues } from 'commander'; import { InputKey } from '../input'; @@ -54,6 +52,7 @@ export class Cli { program.option('--cachePushTo ', 'cache push to caching folder'); program.option('--artifactName ', 'caching artifact name'); program.option('--select