Skip to content

fix

fix #5

name: Bump Native OneSignal SDKs
on:
push:
branches:
- "ci-bump-native-version"
workflow_dispatch:
inputs:
android_version:
description: "Target OneSignal-Android-SDK version (e.g., 5.1.31)"
required: true
type: string
ios_version:
description: "Target OneSignal-iOS-SDK version (e.g., 5.2.10)"
required: true
type: string
jobs:
bump-native-sdks:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install gh CLI
run: |
sudo apt-get update -y
sudo apt-get install -y gh jq
- name: Configure GitHub CLI
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh auth status || gh auth login --with-token <<< "${GH_TOKEN}"
- name: Get current native SDK versions
id: current
run: |
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}" >> $GITHUB_OUTPUT
echo "ios_current=${IOS_CURRENT}" >> $GITHUB_OUTPUT
echo "Detected current Android SDK: ${ANDROID_CURRENT}"
echo "Detected current iOS SDK: ${IOS_CURRENT}"
- name: Gather all release notes between versions
id: notes
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
ANDROID_OLD=${{ steps.current.outputs.android_current }}
ANDROID_NEW=${{ inputs.android_version }}
IOS_OLD=${{ steps.current.outputs.ios_current }}
IOS_NEW=${{ inputs.ios_version }}
get_notes_between() {
local repo=$1
local from=$2
local to=$3
RELEASES=$(gh release list --repo "$repo" --limit 200 --json tagName --jq '.[] | .tagName' | sort -V)
START=0
NOTES=""
for TAG in $RELEASES; do
if [[ "$TAG" == "$from" ]]; then
START=1
continue
fi
if [[ "$START" -eq 1 ]]; then
BODY=$(gh release view "$TAG" --repo "$repo" --json body,tagName --jq '". - ### " + .tagName + "\n" + .body')
NOTES+="$BODY\n\n"
fi
if [[ "$TAG" == "$to" ]]; then
break
fi
done
echo -e "$NOTES"
}
ANDROID_NOTES=$(get_notes_between "OneSignal/OneSignal-Android-SDK" "$ANDROID_OLD" "$ANDROID_NEW")
IOS_NOTES=$(get_notes_between "OneSignal/OneSignal-iOS-SDK" "$IOS_OLD" "$IOS_NEW")
echo "android_notes<<EOF" >> $GITHUB_OUTPUT
echo "$ANDROID_NOTES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "ios_notes<<EOF" >> $GITHUB_OUTPUT
echo "$IOS_NOTES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Update native SDK versions in Unity dependencies
run: |
ANDROID_NEW=${{ inputs.android_version }}
IOS_NEW=${{ inputs.ios_version }}
echo "🔧 Updating Android SDK to $ANDROID_NEW in XML and Gradle..."
sed -i "s/OneSignal-Android-SDK:[0-9.]\+/OneSignal-Android-SDK:${ANDROID_NEW}/g" \
com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml
sed -i "s/OneSignal-Android-SDK:[0-9.]\+/OneSignal-Android-SDK:${ANDROID_NEW}/g" com.onesignal.unity.android/Editor/mainTemplate.gradle
sed -i "s/OneSignal-Android-SDK:[0-9.]\+/OneSignal-Android-SDK:${ANDROID_NEW}/g" com.onesignal.unity.android/Editor/AndroidResolverDependencies.xml
echo "🔧 Updating iOS SDK to $IOS_NEW in XML..."
sed -i "s/OneSignal-iOS-SDK:[0-9.]\+/OneSignal-iOS-SDK:${IOS_NEW}/g" \
com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml
- 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)
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 [native release notes](https://github.com/OneSignal/OneSignal-Android-SDK/releases) and [iOS native 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 "✅ Added detailed changelog under ## [Unreleased]"
- name: Commit and create PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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 inserts a detailed changelog entry under **[Unreleased]** in the Unity SDK changelog." \
--base main \
--label "native-sdk-bump"