Upgrade Unity version #348
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Manually upgrade unity and update packages | |
| # Check if the Unity version already exists as a docker image: https://game.ci/docs/docker/versions | |
| name: Upgrade Unity version | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| unityVersion: | |
| description: 'Unity version' | |
| required: true | |
| type: string | |
| createTags: | |
| description: 'Create Tags' | |
| required: false | |
| type: boolean | |
| default: true | |
| tagsOnly: | |
| description: 'Only create tags' | |
| required: true | |
| type: boolean | |
| default: false | |
| mergeMaster: | |
| description: 'Merge master into branch' | |
| required: true | |
| type: boolean | |
| default: true | |
| customParameters: | |
| description: 'Custom cli arguments' | |
| required: false | |
| type: string | |
| default: '-accept-apiupdate' | |
| jobs: | |
| upgrade-unity-version: | |
| name: Upgrade Unity version and packages to ${{ inputs.unityVersion }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Log input parameter | |
| run: | | |
| BRANCH_NAME=${GITHUB_REF#refs/heads/} | |
| echo "Branch: $BRANCH_NAME" | |
| echo "Unity version: $UNITY_VERSION" | |
| echo "Create tags: $CREATE_TAGS" | |
| echo "Only create tags: $TAGS_ONLY" | |
| echo "Merge master into branch: $MERGE_MASTER" | |
| echo "Custom cli arguments: $CUSTOM_PARAMETERS" | |
| if [[ "$BRANCH_NAME" == *"urp"* ]] | |
| then | |
| echo "urp: true" | |
| else | |
| echo "urp: false" | |
| fi | |
| env: | |
| UNITY_VERSION: ${{ inputs.unityVersion }} | |
| CREATE_TAGS: ${{ inputs.createTags }} | |
| TAGS_ONLY: ${{ inputs.tagsOnly }} | |
| MERGE_MASTER: ${{ inputs.mergeMaster }} | |
| CUSTOM_PARAMETERS: ${{ inputs.customParameters }} | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| lfs: true | |
| # Makes sure, that pushing new tags will trigger workflows | |
| token: ${{ secrets.PR_GITHUB_TOKEN }} | |
| - name: Set git user | |
| run: | | |
| git status | |
| git config --global user.email "$GIT_USER@users.noreply.github.com" | |
| git config --global user.name "$GIT_USER" | |
| env: | |
| GIT_USER: ${{ github.actor }} | |
| # Avoid running into space issues for github runners - Docker images can take up quite some space | |
| - name: Free Disk Space | |
| run: | | |
| echo "Disk space before cleanup:" | |
| df -h | |
| sudo rm -rf /usr/share/dotnet | |
| sudo rm -rf /opt/ghc | |
| sudo rm -rf /usr/local/share/boost | |
| sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
| echo "Disk space after cleanup:" | |
| df -h | |
| # Make sure the branch has the latest master changes in | |
| - name: Merge master into current branch | |
| if: ${{ inputs.mergeMaster }} | |
| run: | | |
| git fetch origin master | |
| git merge FETCH_HEAD | |
| git push | |
| git log -1 | |
| # Unity 2020 cache is not compatible with older versions | |
| - name: Unity Library Cache 2020 or higher | |
| if: ${{ !startsWith(inputs.unityVersion, '201') }} | |
| uses: actions/cache@v4 | |
| with: | |
| path: Library | |
| key: Library-202x-WebGL | |
| restore-keys: Library-202x- | |
| - name: Unity Library Cache 2019 or lower | |
| if: ${{ startsWith(inputs.unityVersion, '201') }} | |
| uses: actions/cache@v4 | |
| with: | |
| path: Library | |
| key: Library-201x-WebGL | |
| restore-keys: Library-201x- | |
| - name: Set last unity version | |
| id: last_unity_version | |
| run: | | |
| LAST_UNITY_VERSION=$(sed -n 's/^\m_EditorVersion: //p'< ./ProjectSettings/ProjectVersion.txt) | |
| echo "VERSION=$LAST_UNITY_VERSION" >> $GITHUB_OUTPUT | |
| BRANCH_NAME=${GITHUB_REF#refs/heads/} | |
| if [[ "$BRANCH_NAME" == *"urp"* ]] | |
| then | |
| echo "NAME=$LAST_UNITY_VERSION-urp" >> $GITHUB_OUTPUT | |
| else | |
| echo "NAME=$LAST_UNITY_VERSION" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Set upgrade name | |
| id: upgrade_name | |
| run: | | |
| BRANCH_NAME=${GITHUB_REF#refs/heads/} | |
| if [[ "$BRANCH_NAME" == *"urp"* ]] | |
| then | |
| echo "NAME=$UNITY_VERSION-urp" >> $GITHUB_OUTPUT | |
| else | |
| echo "NAME=$UNITY_VERSION" >> $GITHUB_OUTPUT | |
| fi | |
| env: | |
| UNITY_VERSION: ${{ inputs.unityVersion }} | |
| - name: Log variables | |
| run: | | |
| echo "last_unity_version -> ${{ steps.last_unity_version.outputs.VERSION }}" | |
| echo "last_unity_name -> ${{ steps.last_unity_version.outputs.NAME }}" | |
| echo "upgrade_name -> ${{ steps.upgrade_name.outputs.NAME }}" | |
| - name: Build project | |
| if: ${{ !inputs.tagsOnly }} | |
| uses: game-ci/unity-builder@v4 | |
| env: | |
| UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} | |
| UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} | |
| UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} | |
| with: | |
| buildMethod: UnityBuilderAction.UnityPackageScripts.UpgradeAllPackagesToVerifiedVersion | |
| customParameters: ${{ inputs.customParameters }} | |
| unityVersion: ${{ inputs.unityVersion }} | |
| targetPlatform: WebGL | |
| buildName: ${{ steps.upgrade_name.outputs.NAME }} | |
| allowDirtyBuild: true | |
| manualExit: true | |
| - name: Check Disk Space After Build | |
| if: ${{ !inputs.tagsOnly }} | |
| run: | | |
| echo "Disk space after build:" | |
| df -h | |
| AVAILABLE=$(df / | tail -1 | awk '{print $4}') | |
| AVAILABLE_GB=$(echo $AVAILABLE | sed 's/G//') | |
| echo "Available space: ${AVAILABLE_GB}GB" | |
| if (( $(echo "$AVAILABLE_GB < 1" | bc -l) )); then | |
| echo "::warning::Low disk space! Less than 1GB remaining." | |
| fi | |
| - name: Delete build folder with elevated rights | |
| if: ${{ !inputs.tagsOnly }} | |
| run: sudo rm -rf ./build | |
| - name: Render template | |
| if: ${{ !inputs.tagsOnly }} | |
| id: template | |
| uses: chuhlomin/render-template@v1.9 | |
| with: | |
| template: .github/templates/upgrade-unity-pr-body.md | |
| vars: | | |
| unityversion: ${{ steps.upgrade_name.outputs.NAME }} | |
| - name: Create Pull Request | |
| if: ${{ !inputs.tagsOnly }} | |
| uses: peter-evans/create-pull-request@v4 | |
| with: | |
| token: ${{ secrets.PR_GITHUB_TOKEN }} | |
| commit-message: "[Automated workflow] upgrade-unity from ${{steps.last_unity_version.outputs.NAME}} to ${{ inputs.unityVersion }}" | |
| branch: "ci/upgrade-unity/from-${{steps.last_unity_version.outputs.NAME}}-to-${{ steps.upgrade_name.outputs.NAME }}" | |
| delete-branch: true | |
| title: "[Automated workflow] upgrade-unity from ${{steps.last_unity_version.outputs.NAME}} to ${{ steps.upgrade_name.outputs.NAME }}" | |
| body: ${{ steps.template.outputs.result }} | |
| - name: Add tags | |
| if: ${{ inputs.createTags || inputs.tagsOnly }} | |
| run: | | |
| BRANCH_NAME=${GITHUB_REF#refs/heads/} | |
| IS_URP=false | |
| if [[ "$BRANCH_NAME" == *"urp"* ]]; then | |
| IS_URP=true | |
| fi | |
| # Run add tags script | |
| ./.github/scripts/add-tags.sh "$UNITY_VERSION" "$IS_URP" | |
| env: | |
| UNITY_VERSION: ${{ inputs.unityVersion }} | |