Bump Native OneSignal SDKs #17
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: Bump Native OneSignal SDKs | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| android_version: | |
| description: "Target OneSignal-Android-SDK version (e.g., 5.1.38)" | |
| required: true | |
| type: string | |
| ios_version: | |
| description: "Target OneSignal-iOS-SDK version (e.g., 5.2.15)" | |
| required: true | |
| type: string | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| bump-native-sdks: | |
| runs-on: ubuntu-latest | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Get current native SDK versions | |
| id: current | |
| run: | | |
| ANDROID_FILE="com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml" | |
| IOS_FILE="com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml" | |
| echo "✅ Checking dependency files..." | |
| if [[ ! -f "$ANDROID_FILE" || ! -f "$IOS_FILE" ]]; then | |
| echo "❌ Missing dependency file(s)" | |
| exit 1 | |
| fi | |
| ANDROID_CURRENT=$(grep -oE 'com\.onesignal:OneSignal:[0-9]+\.[0-9]+\.[0-9]+' "$ANDROID_FILE" | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') | |
| IOS_CURRENT=$(grep -oE 'OneSignalXCFramework\" version=\"[0-9]+\.[0-9]+\.[0-9]+' "$IOS_FILE" | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') | |
| echo "📦 Android current: ${ANDROID_CURRENT:-unknown}" | |
| echo "📦 iOS current: ${IOS_CURRENT:-unknown}" | |
| echo "android_current=${ANDROID_CURRENT}" >> $GITHUB_OUTPUT | |
| echo "ios_current=${IOS_CURRENT}" >> $GITHUB_OUTPUT | |
| - name: Gather native release notes | |
| id: notes | |
| uses: actions/github-script@v8 | |
| env: | |
| ANDROID_OLD: ${{ steps.current.outputs.android_current }} | |
| ANDROID_NEW: ${{ inputs.android_version }} | |
| IOS_OLD: ${{ steps.current.outputs.ios_current }} | |
| IOS_NEW: ${{ inputs.ios_version }} | |
| with: | |
| script: | | |
| const androidRepo = 'OneSignal/OneSignal-Android-SDK'; | |
| const iosRepo = 'OneSignal/OneSignal-iOS-SDK'; | |
| async function getReleaseNotesBetween(repo, fromTag, toTag) { | |
| const [owner, repoName] = repo.split('/'); | |
| const releases = await github.paginate(github.rest.repos.listReleases, { | |
| owner, | |
| repo: repoName, | |
| per_page: 100 | |
| }); | |
| const tags = releases.map(r => r.tag_name.replace(/^Release\s+/, '')); | |
| const fromIndex = tags.indexOf(fromTag); | |
| const toIndex = tags.indexOf(toTag); | |
| if (fromIndex === -1 || toIndex === -1) { | |
| core.warning(`⚠️ Could not find ${fromTag} or ${toTag} in ${repo}`); | |
| return ''; | |
| } | |
| const slice = releases.slice(Math.min(fromIndex, toIndex), Math.max(fromIndex, toIndex) + 1); | |
| let notes = ''; | |
| for (const rel of slice.reverse()) { | |
| if (!rel || /alpha|beta|rc/i.test(rel.tag_name)) continue; // skip prerelease | |
| const body = (rel.body || '').split('<!--')[0].trim(); | |
| notes += `\n- ### ${rel.tag_name}\n${body}\n`; | |
| } | |
| return notes.trim(); | |
| } | |
| const androidNotes = await getReleaseNotesBetween(androidRepo, process.env.ANDROID_OLD, process.env.ANDROID_NEW); | |
| const iosNotes = await getReleaseNotesBetween(iosRepo, process.env.IOS_OLD, process.env.IOS_NEW); | |
| core.setOutput('android_notes', androidNotes); | |
| core.setOutput('ios_notes', iosNotes); | |
| # --- update xml and gradle references --- | |
| - name: Update native SDK versions in Unity dependencies | |
| run: | | |
| ANDROID_NEW=${{ inputs.android_version }} | |
| IOS_NEW=${{ inputs.ios_version }} | |
| echo "🔧 Updating Android SDK → $ANDROID_NEW" | |
| sed -i "s/com\.onesignal:OneSignal:[0-9.]\+/com.onesignal:OneSignal:${ANDROID_NEW}/g" \ | |
| com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml || true | |
| sed -i "s/com\.onesignal:OneSignal:[0-9.]\+/com.onesignal:OneSignal:${ANDROID_NEW}/g" \ | |
| OneSignalExample/Assets/Plugins/Android/mainTemplate.gradle || true | |
| sed -i "s/com\.onesignal:OneSignal:[0-9.]\+/com.onesignal:OneSignal:${ANDROID_NEW}/g" \ | |
| OneSignalExample/Assets/Plugins/Android/AndroidResolverDependencies.xml || true | |
| echo "🔧 Updating iOS SDK → $IOS_NEW" | |
| sed -i "s/OneSignalXCFramework\" version=\"[0-9.]\+/OneSignalXCFramework\" version=\"${IOS_NEW}/g" \ | |
| com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml || true | |
| - name: Insert formatted Android/iOS release notes under '## [Unreleased]' | |
| run: | | |
| ANDROID_OLD=${{ steps.current.outputs.android_current }} | |
| IOS_OLD=${{ steps.current.outputs.ios_current }} | |
| ANDROID_NEW=${{ inputs.android_version }} | |
| IOS_NEW=${{ inputs.ios_version }} | |
| ANDROID_NOTES="${{ steps.notes.outputs.android_notes }}" | |
| IOS_NOTES="${{ steps.notes.outputs.ios_notes }}" | |
| CHANGELOG="OneSignalExample/Assets/OneSignal/CHANGELOG.md" | |
| TMPFILE=$(mktemp) | |
| echo "🪄 Updating changelog: $CHANGELOG" | |
| INSERTION="\ | |
| - Updated included Android SDK from ${ANDROID_OLD} to [${ANDROID_NEW}](https://github.com/OneSignal/OneSignal-Android-SDK/releases/tag/${ANDROID_NEW})\n${ANDROID_NOTES}\n\ | |
| - Updated included iOS SDK from ${IOS_OLD} to [${IOS_NEW}](https://github.com/OneSignal/OneSignal-iOS-SDK/releases/tag/${IOS_NEW})\n${IOS_NOTES}\n\ | |
| \nFor full changes, see the [Android release notes](https://github.com/OneSignal/OneSignal-Android-SDK/releases) and [iOS release notes](https://github.com/OneSignal/OneSignal-iOS-SDK/releases)\n" | |
| awk -v insert="$INSERTION" '/## \[Unreleased\]/ && !done {print; print insert; done=1; next}1' "$CHANGELOG" > "$TMPFILE" && mv "$TMPFILE" "$CHANGELOG" | |
| echo "✅ CHANGELOG updated." | |
| - name: Commit and create PR | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| BRANCH="bump-native-${{ inputs.android_version }}-${{ inputs.ios_version }}" | |
| git checkout -b "$BRANCH" | |
| git add . | |
| git commit -m "Bump native OneSignal SDKs; OneSignal-Android-SDK ${{ inputs.android_version }}, OneSignal-iOS-SDK ${{ inputs.ios_version }}" | |
| git push origin "$BRANCH" | |
| gh pr create \ | |
| --title "Bump native OneSignal SDKs; OneSignal-Android-SDK ${{ inputs.android_version }}, OneSignal-iOS-SDK ${{ inputs.ios_version }}" \ | |
| --body "### 🧩 Native SDK Updates | |
| - **Android:** ${{ inputs.android_version }} | |
| - **iOS:** ${{ inputs.ios_version }} | |
| This PR updates Unity dependency files and adds detailed native SDK changelogs under **[Unreleased]** in the Unity CHANGELOG." \ | |
| --base main \ | |
| --label "native-sdk-bump" |