name: Cloud Runner CI Pipeline on: push: { branches: [cloud-runner-develop, cloud-runner-preview, main] } workflow_dispatch: permissions: checks: write contents: read actions: write env: GKE_ZONE: 'us-central1' GKE_REGION: 'us-central1' GKE_PROJECT: 'unitykubernetesbuilder' GKE_CLUSTER: 'game-ci-github-pipelines' GCP_LOGGING: true GCP_PROJECT: unitykubernetesbuilder GCP_LOG_FILE: ${{ github.workspace }}/cloud-runner-logs.txt AWS_REGION: eu-west-2 AWS_DEFAULT_REGION: eu-west-2 AWS_STACK_NAME: game-ci-team-pipelines CLOUD_RUNNER_BRANCH: ${{ github.ref }} DEBUG: true 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 jobs: tests: name: Tests if: github.event.event_type != 'pull_request_target' runs-on: ubuntu-latest strategy: fail-fast: false matrix: test: - 'cloud-runner-end2end-locking' - 'cloud-runner-end2end-caching' - 'cloud-runner-end2end-retaining' - 'cloud-runner-caching' - 'cloud-runner-environment' - 'cloud-runner-image' - 'cloud-runner-hooks' - 'cloud-runner-local-persistence' - 'cloud-runner-locking-core' - 'cloud-runner-locking-get-locked' steps: - name: Checkout (default) uses: actions/checkout@v4 with: lfs: false - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: eu-west-2 - run: yarn - 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: 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: test: - 'cloud-runner-end2end-locking' - 'cloud-runner-end2end-caching' - 'cloud-runner-end2end-retaining' - 'cloud-runner-environment' - 'cloud-runner-s3-steps' steps: - name: Checkout (default) uses: actions/checkout@v2 with: lfs: false - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: eu-west-2 - run: yarn - 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: 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 strategy: fail-fast: false matrix: providerStrategy: #- aws - local-docker #- k8s targetPlatform: - StandaloneOSX # Build a macOS standalone (Intel 64-bit). - StandaloneWindows64 # Build a Windows 64-bit standalone. - StandaloneLinux64 # Build a Linux 64-bit standalone. - WebGL # WebGL. - iOS # Build an iOS player. # - Android # Build an Android .apk. steps: - name: Checkout (default) uses: actions/checkout@v4 with: lfs: false - run: yarn - uses: ./ id: unity-build timeout-minutes: 30 env: 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 targetPlatform: ${{ matrix.targetPlatform }} providerStrategy: ${{ matrix.providerStrategy }} - run: | cp ./cloud-runner-cache/cache/${{ steps.unity-build.outputs.CACHE_KEY }}/build/${{ steps.unity-build.outputs.BUILD_ARTIFACT }} ${{ steps.unity-build.outputs.BUILD_ARTIFACT }} - uses: actions/upload-artifact@v3 with: 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)