11name : Bump Native OneSignal SDKs
22
33on :
4- push :
5- branches :
6- - " ci-bump-native-version"
74 workflow_dispatch :
85 inputs :
96 android_version :
1512 required : true
1613 type : string
1714
15+ permissions :
16+ contents : write
17+ pull-requests : write
18+
1819jobs :
1920 bump-native-sdks :
21+ name : Bump Native SDKs
2022 runs-on : ubuntu-latest
23+ env :
24+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
2125
2226 steps :
2327 - name : Checkout repository
@@ -31,118 +35,34 @@ jobs:
3135 sudo apt-get install -y gh jq
3236
3337 - name : Configure GitHub CLI
34- env :
35- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
3638 run : gh auth status || gh auth login --with-token <<< "${GH_TOKEN}"
3739
3840 - name : Get current native SDK versions
3941 id : current
4042 run : |
41- ANDROID_CURRENT=$(grep -oP '(?<=OneSignal-Android-SDK:)[0-9]+\.[0-9]+\.[0-9]+' com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml | head -1)
42- IOS_CURRENT=$(grep -oP '(?<=OneSignal-iOS-SDK:)[0-9]+\.[0-9]+\.[0-9]+' com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml | head -1)
43-
44- echo "android_current=${ANDROID_CURRENT}" >> $GITHUB_OUTPUT
45- echo "ios_current=${IOS_CURRENT}" >> $GITHUB_OUTPUT
46- echo "Detected current Android SDK: ${ANDROID_CURRENT}"
47- echo "Detected current iOS SDK: ${IOS_CURRENT}"
48-
49- - name : Gather all release notes between versions
50- id : notes
51- env :
52- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
53- run : |
54- ANDROID_OLD=${{ steps.current.outputs.android_current }}
55- ANDROID_NEW=${{ inputs.android_version }}
56- IOS_OLD=${{ steps.current.outputs.ios_current }}
57- IOS_NEW=${{ inputs.ios_version }}
43+ set -e
44+ cd "${GITHUB_WORKSPACE}" || exit 1
5845
59- get_notes_between() {
60- local repo=$1
61- local from=$2
62- local to=$3
63- RELEASES=$(gh release list --repo "$repo" --limit 200 --json tagName --jq '.[] | .tagName' | sort -V)
64- START=0
65- NOTES=""
66- for TAG in $RELEASES; do
67- if [[ "$TAG" == "$from" ]]; then
68- START=1
69- continue
70- fi
71- if [[ "$START" -eq 1 ]]; then
72- BODY=$(gh release view "$TAG" --repo "$repo" --json body,tagName --jq '". - ### " + .tagName + "\n" + .body')
73- NOTES+="$BODY\n\n"
74- fi
75- if [[ "$TAG" == "$to" ]]; then
76- break
77- fi
78- done
79- echo -e "$NOTES"
80- }
81-
82- ANDROID_NOTES=$(get_notes_between "OneSignal/OneSignal-Android-SDK" "$ANDROID_OLD" "$ANDROID_NEW")
83- IOS_NOTES=$(get_notes_between "OneSignal/OneSignal-iOS-SDK" "$IOS_OLD" "$IOS_NEW")
84-
85- echo "android_notes<<EOF" >> $GITHUB_OUTPUT
86- echo "$ANDROID_NOTES" >> $GITHUB_OUTPUT
87- echo "EOF" >> $GITHUB_OUTPUT
88- echo "ios_notes<<EOF" >> $GITHUB_OUTPUT
89- echo "$IOS_NOTES" >> $GITHUB_OUTPUT
90- echo "EOF" >> $GITHUB_OUTPUT
91-
92- - name : Update native SDK versions in Unity dependencies
93- run : |
94- ANDROID_NEW=${{ inputs.android_version }}
95- IOS_NEW=${{ inputs.ios_version }}
46+ ANDROID_FILE="com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml"
47+ IOS_FILE="com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml"
9648
97- echo "🔧 Updating Android SDK to $ANDROID_NEW in XML and Gradle..."
98- sed -i "s/OneSignal- Android-SDK:[0-9.]\+/OneSignal-Android-SDK:${ANDROID_NEW}/g" \
99- com.onesignal.unity.android/Editor/ OneSignalAndroidDependencies.xml
100- sed -i "s/OneSignal-Android-SDK:[0-9.]\+/OneSignal-Android-SDK:${ANDROID_NEW}/g" OneSignalExample/Assets/Plugins/Android/mainTemplate.gradle
101- sed -i "s/OneSignal-Android-SDK:[0-9.]\+/OneSignal-Android-SDK:${ANDROID_NEW}/g" OneSignalExample/Assets/Plugins/Android/AndroidResolverDependencies.xml
49+ if [[ ! -f "$ANDROID_FILE" ]]; then
50+ echo "❌ Android dependency file not found!"
51+ find . -name " OneSignalAndroidDependencies.xml"
52+ exit 1
53+ fi
10254
103- echo "🔧 Updating iOS SDK to $IOS_NEW in XML..."
104- sed -i "s/OneSignal-iOS-SDK:[0-9.]\+/OneSignal-iOS-SDK:${IOS_NEW}/g" \
105- com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml
106-
107- - name : Insert formatted Android/iOS release notes under '## [Unreleased]'
108- run : |
109- ANDROID_OLD=${{ steps.current.outputs.android_current }}
110- IOS_OLD=${{ steps.current.outputs.ios_current }}
111- ANDROID_NEW=${{ inputs.android_version }}
112- IOS_NEW=${{ inputs.ios_version }}
113- ANDROID_NOTES="${{ steps.notes.outputs.android_notes }}"
114- IOS_NOTES="${{ steps.notes.outputs.ios_notes }}"
115- CHANGELOG="OneSignalExample/Assets/OneSignal/CHANGELOG.md"
116- TMPFILE=$(mktemp)
117-
118- INSERTION="\
119- - 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\
120- - 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\
121- \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"
122-
123- awk -v insert="$INSERTION" '/## \[Unreleased\]/ && !done {print; print insert; done=1; next}1' "$CHANGELOG" > "$TMPFILE" && mv "$TMPFILE" "$CHANGELOG"
124-
125- echo "✅ Added detailed changelog under ## [Unreleased]"
126-
127- - name : Commit and create PR
128- env :
129- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
130- run : |
131- git config user.name "github-actions[bot]"
132- git config user.email "github-actions[bot]@users.noreply.github.com"
55+ if [[ ! -f "$IOS_FILE" ]]; then
56+ echo "❌ iOS dependency file not found!"
57+ find . -name "OneSignaliOSDependencies.xml"
58+ exit 1
59+ fi
13360
134- BRANCH="bump-native-${{ inputs.android_version }}-${{ inputs.ios_version }}"
135- git checkout -b "$BRANCH"
136- git add .
137- git commit -m "Bump native OneSignal SDKs; OneSignal-Android-SDK ${{ inputs.android_version }}, OneSignal-iOS-SDK ${{ inputs.ios_version }}"
138- git push origin "$BRANCH"
61+ echo "✅ Found both dependency files."
62+ echo "→ Android: $ANDROID_FILE"
63+ echo "→ iOS: $IOS_FILE"
13964
140- gh pr create \
141- --title "Bump native OneSignal SDKs; OneSignal-Android-SDK ${{ inputs.android_version }}, OneSignal-iOS-SDK ${{ inputs.ios_version }}" \
142- --body "### 🧩 Native SDK Updates
143- - Android: ${{ inputs.android_version }}
144- - iOS: ${{ inputs.ios_version }}
65+ 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]+')
66+ IOS_CURRENT=$(grep -oE 'OneSignalXCFramework\" version=\"[0-9]+\.[0-9]+\.[0-9]+' "$IOS_FILE" | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
14567
146- This PR updates Unity dependency files and inserts a detailed changelog entry under **[Unreleased]** in the Unity SDK changelog." \
147- --base main \
148- --label "native-sdk-bump"
68+ echo "Detected current Android SDK: ${AND
0 commit comments