name: Windows Builds on: workflow_dispatch: push: branches: - main env: UNITY_LICENSE: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nm0Db8UK+ktnOLJBtHybkfetpcKo=o/pUbSQAukz7+ZYAWhnA0AJbIlyyCPL7bKVEM2lVqbrXt7cyey+umkCXamuOgsWPVUKBMkXtMH8L\n5etLmD0getWIhTGhzOnDCk+gtIPfL4jMo9tkEuOCROQAXCci23VFscKcrkB+3X6h4wEOtA2APhOY\nB+wvC794o8/82ffjP79aVAi57rp3Wmzx+9pe9yMwoJuljAy2sc2tIMgdQGWVmOGBpQm3JqsidyzI\nJWG2kjnc7pDXK9pwYzXoKiqUqqrut90d+kQqRyv7MSZXR50HFqD/LI69h68b7P8Bjo3bPXOhNXGR\n9YCoemH6EkfCJxp2gIjzjWW+l2Hj2EsFQi8YXw==" jobs: buildForAllPlatformsWindows: name: Build for ${{ matrix.targetPlatform }} on version ${{ matrix.unityVersion }} runs-on: windows-2019 strategy: fail-fast: false matrix: projectPath: - test-project unityVersion: - 2019.3.15f1 # Minimum version for IL2CPP - 2019.4.40f1 - 2020.1.17f1 - 2020.2.7f1 - 2020.3.44f1 - 2021.3.18f1 # 2021.1 and 2021.2 seem to have IL2CPP issues - 2022.1.24f1 - 2022.2.6f1 targetPlatform: - StandaloneWindows64 # Build a Windows 64-bit standalone. - StandaloneWindows # Build a Windows 32-bit standalone. - WSAPlayer # Build a UWP App - tvOS # Build an Apple TV XCode project steps: ########################### # Checkout # ########################### - uses: actions/checkout@v3 with: lfs: true ########################### # Cache # ########################### - uses: actions/cache@v3 with: path: ${{ matrix.projectPath }}/Library key: Library-${{ matrix.projectPath }}-windows-${{ matrix.targetPlatform }} restore-keys: | Library-${{ matrix.projectPath }}-windows- Library- ########################### # Set Scripting Backend # ########################### - name: Set Scripting Backend To il2cpp run: | Move-Item -Path "./test-project/ProjectSettings/ProjectSettingsIl2cpp.asset" -Destination "./test-project/ProjectSettings/ProjectSettings.asset" -Force ########################### # Build # ########################### - name: Build uses: ./ id: build-1 continue-on-error: true timeout-minutes: 60 env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} with: projectPath: ${{ matrix.projectPath }} unityVersion: ${{ matrix.unityVersion }} targetPlatform: ${{ matrix.targetPlatform }} customParameters: -profile SomeProfile -someBoolean -someValue exampleValue allowDirtyBuild: true # We use dirty build because we are replacing the default project settings file above - name: Sleep for Retry if: ${{ steps.build-1.outcome == 'failure' }} run: | Start-Sleep -s 120 - name: Build Retry 1 uses: ./ id: build-2 continue-on-error: true timeout-minutes: 60 if: steps.build-1.outcome == 'failure' env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} with: projectPath: ${{ matrix.projectPath }} unityVersion: ${{ matrix.unityVersion }} targetPlatform: ${{ matrix.targetPlatform }} customParameters: -profile SomeProfile -someBoolean -someValue exampleValue allowDirtyBuild: true # We use dirty build because we are replacing the default project settings file above - name: Sleep for Retry if: ${{ steps.build-1.outcome == 'failure' && steps.build-2.outcome == 'failure' }} run: | Start-Sleep -s 240 - name: Build Retry 2 uses: ./ id: build-3 timeout-minutes: 60 if: ${{ steps.build-1.outcome == 'failure' && steps.build-2.outcome == 'failure' }} env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} with: projectPath: ${{ matrix.projectPath }} unityVersion: ${{ matrix.unityVersion }} targetPlatform: ${{ matrix.targetPlatform }} customParameters: -profile SomeProfile -someBoolean -someValue exampleValue allowDirtyBuild: true # We use dirty build because we are replacing the default project settings file above ########################### # Upload # ########################### - uses: actions/upload-artifact@v3 with: name: Build Windows (${{ matrix.unityVersion }}) path: build retention-days: 14