AI Game Developer update #56
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
| name: release | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - main | |
| env: | |
| INSTALLER_UNITY_VERSION: 2022.3.62f3 | |
| jobs: | |
| check-version-tag: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version: ${{ steps.get_version.outputs.current-version }} | |
| prev_tag: ${{ steps.prev_tag.outputs.tag }} | |
| tag_exists: ${{ steps.tag_exists.outputs.exists }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Get version from package.json | |
| id: get_version | |
| uses: martinbeentjes/[email protected] | |
| with: | |
| path: Unity-Package/Assets/root | |
| - name: Find previous version tag | |
| id: prev_tag | |
| uses: WyriHaximus/github-action-get-previous-tag@v2 | |
| - name: Check if tag exists | |
| id: tag_exists | |
| uses: mukunku/[email protected] | |
| with: | |
| tag: ${{ steps.get_version.outputs.current-version }} | |
| build-unity-installer: | |
| runs-on: ubuntu-latest | |
| needs: [check-version-tag] | |
| if: needs.check-version-tag.outputs.tag_exists == 'false' | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Cache Unity Library | |
| uses: actions/cache@v5 | |
| with: | |
| path: ./Installer/Library | |
| key: Library-Unity-Installer | |
| - name: Test Unity Installer (EditMode) | |
| uses: game-ci/unity-test-runner@v4 | |
| env: | |
| UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} | |
| UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} | |
| UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} | |
| with: | |
| projectPath: ./Installer | |
| unityVersion: ${{ env.INSTALLER_UNITY_VERSION }} | |
| customImage: "unityci/editor:ubuntu-${{ env.INSTALLER_UNITY_VERSION }}-base-3" | |
| testMode: editmode | |
| githubToken: ${{ secrets.GITHUB_TOKEN }} | |
| checkName: Unity Installer EditMode Test Results | |
| artifactsPath: artifacts-installer-editmode | |
| customParameters: -CI true -GITHUB_ACTIONS true | |
| - name: Clean Unity artifacts and reset git state | |
| run: | | |
| # Force remove Unity generated files with restricted permissions | |
| sudo rm -rf ./Installer/Logs/ || true | |
| sudo rm -rf ./Installer/Temp/ || true | |
| sudo rm -rf ./artifacts-installer-editmode/ || true | |
| # Reset only tracked files to their committed state | |
| git reset --hard HEAD | |
| echo "Cleaned Unity artifacts and reset tracked files" | |
| - name: Export Unity Package | |
| uses: game-ci/unity-builder@v4 | |
| env: | |
| UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} | |
| UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} | |
| UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} | |
| with: | |
| projectPath: ./Installer | |
| unityVersion: ${{ env.INSTALLER_UNITY_VERSION }} | |
| customImage: "unityci/editor:ubuntu-${{ env.INSTALLER_UNITY_VERSION }}-base-3" | |
| buildName: AI-ParticleSystem-Installer | |
| buildsPath: build | |
| buildMethod: com.IvanMurzak.Unity.MCP.ParticleSystem.Installer.PackageExporter.ExportPackage | |
| customParameters: -CI true -GITHUB_ACTIONS true | |
| - name: Upload Unity Package as artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: unity-installer-package | |
| path: ./Installer/build/AI-ParticleSystem-Installer.unitypackage | |
| # --- UNITY TESTS --- | |
| # ------------------- | |
| # --- EDIT MODE --- | |
| test-unity-2022-3-62f3-editmode: | |
| needs: [build-unity-installer] | |
| uses: ./.github/workflows/test_unity_plugin.yml | |
| with: | |
| projectPath: "./Unity-Tests/2022.3.62f3" | |
| unityVersion: "2022.3.62f3" | |
| testMode: "editmode" | |
| secrets: inherit | |
| test-unity-2023-2-22f1-editmode: | |
| needs: [build-unity-installer] | |
| uses: ./.github/workflows/test_unity_plugin.yml | |
| with: | |
| projectPath: "./Unity-Tests/2023.2.22f1" | |
| unityVersion: "2023.2.22f1" | |
| testMode: "editmode" | |
| secrets: inherit | |
| test-unity-6000-3-1f1-editmode: | |
| needs: [build-unity-installer] | |
| uses: ./.github/workflows/test_unity_plugin.yml | |
| with: | |
| projectPath: "./Unity-Tests/6000.3.1f1" | |
| unityVersion: "6000.3.1f1" | |
| testMode: "editmode" | |
| secrets: inherit | |
| # --- PLAY MODE --- | |
| test-unity-2022-3-62f3-playmode: | |
| needs: [build-unity-installer] | |
| uses: ./.github/workflows/test_unity_plugin.yml | |
| with: | |
| projectPath: "./Unity-Tests/2022.3.62f3" | |
| unityVersion: "2022.3.62f3" | |
| testMode: "playmode" | |
| secrets: inherit | |
| test-unity-2023-2-22f1-playmode: | |
| needs: [build-unity-installer] | |
| uses: ./.github/workflows/test_unity_plugin.yml | |
| with: | |
| projectPath: "./Unity-Tests/2023.2.22f1" | |
| unityVersion: "2023.2.22f1" | |
| testMode: "playmode" | |
| secrets: inherit | |
| test-unity-6000-3-1f1-playmode: | |
| needs: [build-unity-installer] | |
| uses: ./.github/workflows/test_unity_plugin.yml | |
| with: | |
| projectPath: "./Unity-Tests/6000.3.1f1" | |
| unityVersion: "6000.3.1f1" | |
| testMode: "playmode" | |
| secrets: inherit | |
| # --- STANDALONE --- | |
| test-unity-2022-3-62f3-standalone: | |
| needs: [build-unity-installer] | |
| uses: ./.github/workflows/test_unity_plugin.yml | |
| with: | |
| projectPath: "./Unity-Tests/2022.3.62f3" | |
| unityVersion: "2022.3.62f3" | |
| testMode: "standalone" | |
| secrets: inherit | |
| test-unity-2023-2-22f1-standalone: | |
| needs: [build-unity-installer] | |
| uses: ./.github/workflows/test_unity_plugin.yml | |
| with: | |
| projectPath: "./Unity-Tests/2023.2.22f1" | |
| unityVersion: "2023.2.22f1" | |
| testMode: "standalone" | |
| secrets: inherit | |
| test-unity-6000-3-1f1-standalone: | |
| needs: [build-unity-installer] | |
| uses: ./.github/workflows/test_unity_plugin.yml | |
| with: | |
| projectPath: "./Unity-Tests/6000.3.1f1" | |
| unityVersion: "6000.3.1f1" | |
| testMode: "standalone" | |
| secrets: inherit | |
| # ------------------- | |
| release-unity-plugin: | |
| runs-on: ubuntu-latest | |
| needs: | |
| [ | |
| check-version-tag, | |
| build-unity-installer, | |
| test-unity-2022-3-62f3-editmode, | |
| test-unity-2022-3-62f3-playmode, | |
| test-unity-2022-3-62f3-standalone, | |
| test-unity-2023-2-22f1-editmode, | |
| test-unity-2023-2-22f1-playmode, | |
| test-unity-2023-2-22f1-standalone, | |
| test-unity-6000-3-1f1-editmode, | |
| test-unity-6000-3-1f1-playmode, | |
| test-unity-6000-3-1f1-standalone, | |
| ] | |
| if: needs.check-version-tag.outputs.tag_exists == 'false' | |
| outputs: | |
| version: ${{ needs.check-version-tag.outputs.version }} | |
| success: ${{ steps.rel_desc.outputs.success }} | |
| release_notes: ${{ steps.rel_desc.outputs.release_body }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Generate release description | |
| id: rel_desc | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| set -e | |
| version=${{ needs.check-version-tag.outputs.version }} | |
| prev_tag=${{ needs.check-version-tag.outputs.prev_tag }} | |
| repo_url="https://github.com/${GITHUB_REPOSITORY}" | |
| today=$(date +'%B %e, %Y') | |
| echo "repo_url: $repo_url" | |
| echo "today: $today" | |
| echo "# Package $version" > release.md | |
| echo "**Released:** *$today*" >> release.md | |
| echo "" >> release.md | |
| echo "---" >> release.md | |
| echo "" >> release.md | |
| if [ -n "$prev_tag" ]; then | |
| echo "## Comparison" >> release.md | |
| echo "See every change: [Compare $prev_tag...$version]($repo_url/compare/$prev_tag...$version)" >> release.md | |
| echo "" >> release.md | |
| echo "---" >> release.md | |
| echo "" >> release.md | |
| echo "## Commit Summary (Newest → Oldest)" >> release.md | |
| for sha in $(git log --pretty=format:'%H' $prev_tag..HEAD); do | |
| username=$(gh api repos/${GITHUB_REPOSITORY}/commits/$sha --jq '.author.login // .commit.author.name') | |
| message=$(git log -1 --pretty=format:'%s' $sha) | |
| short_sha=$(git log -1 --pretty=format:'%h' $sha) | |
| echo "- [\`$short_sha\`]($repo_url/commit/$sha) — $message by @$username" >> release.md | |
| done | |
| fi | |
| printf "release_body<<ENDOFRELEASEBODY\n%s\nENDOFRELEASEBODY\n" "$(cat release.md)" >> $GITHUB_OUTPUT | |
| echo "success=true" >> $GITHUB_OUTPUT | |
| - name: Create Tag and Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ needs.check-version-tag.outputs.version }} | |
| name: ${{ needs.check-version-tag.outputs.version }} | |
| body: ${{ steps.rel_desc.outputs.release_body }} | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| publish-unity-installer: | |
| runs-on: ubuntu-latest | |
| needs: release-unity-plugin | |
| if: needs.release-unity-plugin.outputs.success == 'true' | |
| steps: | |
| - name: Download Unity Package artifact | |
| uses: actions/download-artifact@v6 | |
| with: | |
| name: unity-installer-package | |
| path: ./ | |
| - name: Upload Unity Package to Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: ./AI-ParticleSystem-Installer.unitypackage | |
| tag_name: ${{ needs.release-unity-plugin.outputs.version }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # Cleanup job to remove build artifacts after publishing | |
| cleanup-artifacts: | |
| runs-on: ubuntu-latest | |
| needs: [publish-unity-installer] | |
| if: always() | |
| steps: | |
| - name: Delete Unity Package artifacts | |
| uses: geekyeggo/delete-artifact@v5 | |
| with: | |
| name: unity-installer-package | |
| failOnError: false | |
| continue-on-error: true |