test on the working branch #4
Workflow file for this run
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: Create Unity Release PR | |
| on: | |
| push: | |
| branches: | |
| - "ci-unity" | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'New Unity SDK version (e.g. 5.4.0-alpha01 or 3.2.1)' | |
| type: string | |
| required: true | |
| base_branch: | |
| description: 'Target branch for the PR (e.g. main for regular releases, 5.4-main for patch releases)' | |
| type: string | |
| required: false | |
| default: 'main' | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| create-unity-release: | |
| runs-on: ubuntu-latest | |
| env: | |
| VERSION: ${{ github.event.inputs.version }} | |
| BASE_BRANCH: ${{ github.event.inputs.base_branch || 'main' }} | |
| BRANCH: release/${{ github.event.inputs.version }} | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| steps: | |
| - name: 📋 Display Configuration | |
| run: | | |
| echo "============================================" | |
| echo "🎮 Creating Unity SDK Release" | |
| echo "📦 Version: $VERSION" | |
| echo "🎯 Base Branch (PR Target): $BASE_BRANCH" | |
| echo "🌿 Release Branch (to create): $BRANCH" | |
| echo "============================================" | |
| - name: ✅ Validate Base Branch | |
| run: | | |
| if [[ "$BASE_BRANCH" == "main" ]]; then | |
| echo "✅ Valid base branch: main" | |
| elif [[ "$BASE_BRANCH" =~ ^[0-9]+\.[0-9]+-main$ ]]; then | |
| echo "✅ Valid base branch: $BASE_BRANCH" | |
| else | |
| echo "❌ ERROR: Invalid base branch '$BASE_BRANCH'" | |
| echo "" | |
| echo "Base branch must be either:" | |
| echo " - 'main' (for regular releases)" | |
| echo " - 'X.Y-main' (for patch lines, e.g., 5.4-main)" | |
| exit 1 | |
| fi | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Create release branch from base | |
| run: | | |
| if git ls-remote --exit-code --heads origin "$BRANCH"; then | |
| echo "Deleting remote branch $BRANCH" | |
| git push origin --delete "$BRANCH" | |
| fi | |
| echo "Creating release branch $BRANCH from main" | |
| git checkout -b "$BRANCH" origin/main | |
| - name: Run composeRelease.sh | |
| run: | | |
| chmod +x ./composeRelease.sh | |
| ./composeRelease.sh $VERSION | |
| shell: bash | |
| - name: Commit and Push version bump | |
| run: | | |
| # 1. Update Version number in OneSignal.cs | |
| echo "✅ Updating OneSignal.cs" | |
| if [ -f "com.onesignal.unity.core/Runtime/OneSignal.cs" ]; then | |
| sed -i "s/public const string SdkVersion = \".*\"/public const string SdkVersion = \"$VERSION\"/" com.onesignal.unity.core/Runtime/OneSignal.cs | |
| fi | |
| # 2. Update iOS version header in UIApplication+OneSignalUnity.mm | |
| echo "✅ Updating UIApplication+OneSignalUnity.mm" | |
| if [ -f "com.onesignal.unity.ios/Runtime/UIApplication+OneSignalUnity.mm" ]; then | |
| sed -i "s/NSString \*const ONESIGNAL_UNITY_VERSION = @\".*\"/NSString *const ONESIGNAL_UNITY_VERSION = @\"$VERSION\"/" com.onesignal.unity.ios/Runtime/UIApplication+OneSignalUnity.mm | |
| fi | |
| # 3. Update platform version header in OneSignalPlatform.cs | |
| echo "✅ Updating OneSignalPlatform.cs" | |
| if [ -f "com.onesignal.unity.android/Runtime/OneSignalPlatform.cs" ]; then | |
| sed -i "s/private const string SdkVersion = \".*\"/private const string SdkVersion = \"$VERSION\"/" com.onesignal.unity.android/Runtime/OneSignalPlatform.cs | |
| fi | |
| fi | |
| # 4. Update example app packages-lock.json | |
| echo "✅ Updating packages-lock.json" | |
| if [ -f "OneSignalExample/Packages/packages-lock.json" ]; then | |
| # Update com.onesignal.unity.android version | |
| jq --arg ver "$VERSION" \ | |
| '(.dependencies."com.onesignal.unity.android".version = $ver)' \ | |
| OneSignalExample/Packages/packages-lock.json > temp.json && \ | |
| mv temp.json OneSignalExample/Packages/packages-lock.json | |
| # Update com.onesignal.unity.ios version | |
| jq --arg ver "$VERSION" \ | |
| '(.dependencies."com.onesignal.unity.ios".version = $ver)' \ | |
| OneSignalExample/Packages/packages-lock.json > temp.json && \ | |
| mv temp.json OneSignalExample/Packages/packages-lock.json | |
| # Update com.onesignal.unity.core version | |
| jq --arg ver "$VERSION" \ | |
| '(.dependencies."com.onesignal.unity.core".version = $ver)' \ | |
| OneSignalExample/Packages/packages-lock.json > temp.json && \ | |
| mv temp.json OneSignalExample/Packages/packages-lock.json | |
| fi | |
| # 5. Update version number in .asmdef files | |
| echo "✅ Updating .asmdef files" | |
| # List of asmdef files to update | |
| ASMDEF_FILES=( | |
| "com.onesignal.unity.core/Runtime/OneSignal.UnityPackage.Attribution.asmdef" | |
| "OneSignalExample/Assets/OneSignal.UnityPackage.Example.asmdef" | |
| "com.onesignal.unity.core/Editor/OneSignal.UnityPackage.Editor.asmdef" | |
| ) | |
| for asmdef in "${ASMDEF_FILES[@]}"; do | |
| if [ -f "$asmdef" ]; then | |
| echo " - Updating $asmdef" | |
| # Update versionDefines expression field | |
| jq --arg ver "$VERSION" \ | |
| '(.versionDefines[]?.expression = $ver)' \ | |
| "$asmdef" > temp.json && mv temp.json "$asmdef" | |
| else | |
| echo " ⚠️ File not found: $asmdef" | |
| fi | |
| done | |
| echo "" | |
| echo "✅ Version update complete!" | |
| echo "Updated to version: $VERSION" | |
| - name: Generate PR Body | |
| run: | | |
| echo "## 🎮 Unity SDK Release v$VERSION" > pr_body.md | |
| echo "" >> pr_body.md | |
| echo "**Summary:**" >> pr_body.md | |
| echo "- Automated release PR created by CI." >> pr_body.md | |
| echo "- Includes version bumps and changelog updates performed by composeRelease.sh." >> pr_body.md | |
| echo "" >> pr_body.md | |
| echo "**Next Steps:**" >> pr_body.md | |
| echo "1. Review and approve this PR." >> pr_body.md | |
| echo "2. Merge into \`$BASE_BRANCH\`." >> pr_body.md | |
| echo "3. Verify the generated draft GitHub release and attach the updated *.unitypackage if needed." >> pr_body.md | |
| echo "" >> pr_body.md | |
| echo "_This PR was auto-generated by create-unity-release CI._" >> pr_body.md | |
| - name: Create Pull Request | |
| run: | | |
| gh pr create \ | |
| --title "Release Unity SDK v$VERSION" \ | |
| --body-file pr_body.md \ | |
| --head "$BRANCH" \ | |
| --base "$BASE_BRANCH" |