Skip to content

Commit c758b9f

Browse files
committed
update
1 parent 7112acb commit c758b9f

File tree

1 file changed

+74
-126
lines changed

1 file changed

+74
-126
lines changed

.github/workflows/bump-native-version.yml

Lines changed: 74 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ on:
44
workflow_dispatch:
55
inputs:
66
android_version:
7-
description: "Target OneSignal-Android-SDK version (e.g., 5.1.31)"
7+
description: "Target OneSignal-Android-SDK version (e.g., 5.1.38)"
88
required: true
99
type: string
1010
ios_version:
11-
description: "Target OneSignal-iOS-SDK version (e.g., 5.2.10)"
11+
description: "Target OneSignal-iOS-SDK version (e.g., 5.2.15)"
1212
required: true
1313
type: string
1414

@@ -20,152 +20,99 @@ jobs:
2020
bump-native-sdks:
2121
runs-on: ubuntu-latest
2222
env:
23-
GH_TOKEN: ${{ secrets.ONESIGNAL_PAT }}
23+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2424

2525
steps:
2626
- name: Checkout repository
2727
uses: actions/checkout@v4
2828
with:
2929
fetch-depth: 0
3030

31-
- name: Install gh CLI
32-
run: |
33-
sudo apt-get update -y
34-
sudo apt-get install -y gh jq
35-
36-
- name: Configure GitHub CLI
37-
run: gh auth status || gh auth login --with-token <<< "${GH_TOKEN}"
38-
39-
- name: Debug GH CLI access
40-
run: |
41-
echo "🔍 Checking authentication"
42-
gh auth status
43-
echo "🔍 Listing releases from Android SDK repo"
44-
gh release list --repo OneSignal/OneSignal-Android-SDK --limit 5
45-
echo "🔍 Listing releases from iOS SDK repo"
46-
gh release list --repo OneSignal/OneSignal-iOS-SDK --limit 5
47-
4831
- name: Get current native SDK versions
4932
id: current
5033
run: |
51-
set -e
52-
cd "${GITHUB_WORKSPACE}" || exit 1
53-
5434
ANDROID_FILE="com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml"
5535
IOS_FILE="com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml"
5636
57-
if [[ ! -f "$ANDROID_FILE" ]]; then
58-
echo "❌ Android dependency file not found!"
59-
find . -name "OneSignalAndroidDependencies.xml"
37+
echo "✅ Checking dependency files..."
38+
if [[ ! -f "$ANDROID_FILE" || ! -f "$IOS_FILE" ]]; then
39+
echo "❌ Missing dependency file(s)"
6040
exit 1
6141
fi
6242
63-
if [[ ! -f "$IOS_FILE" ]]; then
64-
echo "❌ iOS dependency file not found!"
65-
find . -name "OneSignaliOSDependencies.xml"
66-
exit 1
67-
fi
68-
69-
echo "✅ Found both dependency files."
70-
echo "→ Android: $ANDROID_FILE"
71-
echo "→ iOS: $IOS_FILE"
72-
7343
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]+')
7444
IOS_CURRENT=$(grep -oE 'OneSignalXCFramework\" version=\"[0-9]+\.[0-9]+\.[0-9]+' "$IOS_FILE" | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
7545
76-
echo "Detected current Android SDK: ${ANDROID_CURRENT:-<none>}"
77-
echo "Detected current iOS SDK: ${IOS_CURRENT:-<none>}"
46+
echo "📦 Android current: ${ANDROID_CURRENT:-unknown}"
47+
echo "📦 iOS current: ${IOS_CURRENT:-unknown}"
7848
7949
echo "android_current=${ANDROID_CURRENT}" >> $GITHUB_OUTPUT
8050
echo "ios_current=${IOS_CURRENT}" >> $GITHUB_OUTPUT
8151
82-
- name: Gather all release notes between versions
52+
- name: Gather native release notes
8353
id: notes
84-
shell: bash {0}
85-
run: |
86-
ANDROID_OLD=${{ steps.current.outputs.android_current }}
87-
ANDROID_NEW=${{ inputs.android_version }}
88-
IOS_OLD=${{ steps.current.outputs.ios_current }}
89-
IOS_NEW=${{ inputs.ios_version }}
90-
91-
echo "ANDROID_OLD=${ANDROID_OLD}, ANDROID_NEW=${ANDROID_NEW}"
92-
echo "IOS_OLD=${IOS_OLD}, IOS_NEW=${IOS_NEW}"
93-
94-
get_notes_between() {
95-
local repo=$1
96-
local from=$2
97-
local to=$3
98-
99-
echo "🔎 Gathering release notes for $repo from $from → $to"
100-
RELEASES=$(gh release list --repo "$repo" --limit 200 --json tagName --jq '.[] | .tagName' | sed 's/^Release //g' | sort -V)
101-
START=0
102-
NOTES=""
103-
FOUND=0
104-
105-
for TAG in $RELEASES; do
106-
echo "Checking tag: $TAG"
107-
if [[ "$TAG" == "$from" ]]; then
108-
START=1
109-
continue
110-
fi
111-
if [[ "$START" -eq 1 ]]; then
112-
BODY=$(gh release view "$TAG" --repo "$repo" --json body,tagName --jq '". - ### " + .tagName + "\n" + (.body // "")' 2>/dev/null || true)
113-
if [[ -n "$BODY" ]]; then
114-
NOTES+="$BODY\n\n"
115-
FOUND=1
116-
fi
117-
fi
118-
if [[ "$TAG" == "$to" ]]; then
119-
break
120-
fi
121-
done
122-
123-
if [[ "$FOUND" -eq 0 ]]; then
124-
echo "⚠️ No notes found between $from → $to (possibly mismatched tags)"
125-
fi
126-
127-
echo -e "$NOTES"
128-
}
129-
130-
ANDROID_NOTES=$(get_notes_between "OneSignal/OneSignal-Android-SDK" "$ANDROID_OLD" "$ANDROID_NEW")
131-
IOS_NOTES=$(get_notes_between "OneSignal/OneSignal-iOS-SDK" "$IOS_OLD" "$IOS_NEW")
132-
133-
echo "android_notes<<EOF" >> $GITHUB_OUTPUT
134-
echo "$ANDROID_NOTES" >> $GITHUB_OUTPUT
135-
echo "EOF" >> $GITHUB_OUTPUT
136-
echo "ios_notes<<EOF" >> $GITHUB_OUTPUT
137-
echo "$IOS_NOTES" >> $GITHUB_OUTPUT
138-
echo "EOF" >> $GITHUB_OUTPUT
139-
140-
141-
54+
uses: actions/github-script@v8
55+
env:
56+
ANDROID_OLD: ${{ steps.current.outputs.android_current }}
57+
ANDROID_NEW: ${{ inputs.android_version }}
58+
IOS_OLD: ${{ steps.current.outputs.ios_current }}
59+
IOS_NEW: ${{ inputs.ios_version }}
60+
with:
61+
script: |
62+
const androidRepo = 'OneSignal/OneSignal-Android-SDK';
63+
const iosRepo = 'OneSignal/OneSignal-iOS-SDK';
64+
65+
async function getReleaseNotesBetween(repo, fromTag, toTag) {
66+
const [owner, repoName] = repo.split('/');
67+
const releases = await github.paginate(github.rest.repos.listReleases, {
68+
owner,
69+
repo: repoName,
70+
per_page: 100
71+
});
72+
73+
const tags = releases.map(r => r.tag_name.replace(/^Release\s+/, ''));
74+
const fromIndex = tags.indexOf(fromTag);
75+
const toIndex = tags.indexOf(toTag);
76+
77+
if (fromIndex === -1 || toIndex === -1) {
78+
core.warning(`⚠️ Could not find ${fromTag} or ${toTag} in ${repo}`);
79+
return '';
80+
}
81+
82+
const slice = releases.slice(Math.min(fromIndex, toIndex), Math.max(fromIndex, toIndex) + 1);
83+
let notes = '';
84+
for (const rel of slice.reverse()) {
85+
if (!rel || /alpha|beta|rc/i.test(rel.tag_name)) continue; // skip prerelease
86+
const body = (rel.body || '').split('<!--')[0].trim();
87+
notes += `\n- ### ${rel.tag_name}\n${body}\n`;
88+
}
89+
90+
return notes.trim();
91+
}
92+
93+
const androidNotes = await getReleaseNotesBetween(androidRepo, process.env.ANDROID_OLD, process.env.ANDROID_NEW);
94+
const iosNotes = await getReleaseNotesBetween(iosRepo, process.env.IOS_OLD, process.env.IOS_NEW);
95+
96+
core.setOutput('android_notes', androidNotes);
97+
core.setOutput('ios_notes', iosNotes);
98+
99+
# --- update xml and gradle references ---
142100
- name: Update native SDK versions in Unity dependencies
143101
run: |
144102
ANDROID_NEW=${{ inputs.android_version }}
145103
IOS_NEW=${{ inputs.ios_version }}
146104
147-
echo "🔧 Updating Android SDK to $ANDROID_NEW in XML and Gradle..."
148-
for FILE in \
149-
com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml \
150-
com.onesignal.unity.android/Editor/mainTemplate.gradle \
151-
com.onesignal.unity.android/Editor/AndroidResolverDependencies.xml
152-
do
153-
if [[ -f "$FILE" ]]; then
154-
sed -i "s#com\.onesignal:OneSignal:[0-9.]\+#com.onesignal:OneSignal:${ANDROID_NEW}#g" "$FILE"
155-
echo "✅ Updated $FILE"
156-
else
157-
echo "⚠️ Skipping missing file: $FILE"
158-
fi
159-
done
160-
161-
echo "🔧 Updating iOS SDK to $IOS_NEW..."
162-
IOS_FILE="com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml"
163-
if [[ -f "$IOS_FILE" ]]; then
164-
sed -i "s/OneSignalXCFramework\" version=\"[0-9.]\+/OneSignalXCFramework\" version=\"${IOS_NEW}/g" "$IOS_FILE"
165-
echo "✅ Updated $IOS_FILE"
166-
else
167-
echo "⚠️ Skipping missing file: $IOS_FILE"
168-
fi
105+
echo "🔧 Updating Android SDK → $ANDROID_NEW"
106+
sed -i "s/com\.onesignal:OneSignal:[0-9.]\+/com.onesignal:OneSignal:${ANDROID_NEW}/g" \
107+
com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml || true
108+
sed -i "s/com\.onesignal:OneSignal:[0-9.]\+/com.onesignal:OneSignal:${ANDROID_NEW}/g" \
109+
OneSignalExample/Assets/Plugins/Android/mainTemplate.gradle || true
110+
sed -i "s/com\.onesignal:OneSignal:[0-9.]\+/com.onesignal:OneSignal:${ANDROID_NEW}/g" \
111+
OneSignalExample/Assets/Plugins/Android/AndroidResolverDependencies.xml || true
112+
113+
echo "🔧 Updating iOS SDK → $IOS_NEW"
114+
sed -i "s/OneSignalXCFramework\" version=\"[0-9.]\+/OneSignalXCFramework\" version=\"${IOS_NEW}/g" \
115+
com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml || true
169116
170117
- name: Insert formatted Android/iOS release notes under '## [Unreleased]'
171118
run: |
@@ -178,14 +125,15 @@ jobs:
178125
CHANGELOG="OneSignalExample/Assets/OneSignal/CHANGELOG.md"
179126
TMPFILE=$(mktemp)
180127
128+
echo "🪄 Updating changelog: $CHANGELOG"
181129
INSERTION="\
182-
- 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\
183-
- 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\
184-
\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"
130+
- 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\
131+
- 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\
132+
\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"
185133
186134
awk -v insert="$INSERTION" '/## \[Unreleased\]/ && !done {print; print insert; done=1; next}1' "$CHANGELOG" > "$TMPFILE" && mv "$TMPFILE" "$CHANGELOG"
187135
188-
echo "✅ Added detailed changelog under ## [Unreleased]"
136+
echo "✅ CHANGELOG updated."
189137
190138
- name: Commit and create PR
191139
run: |
@@ -201,9 +149,9 @@ jobs:
201149
gh pr create \
202150
--title "Bump native OneSignal SDKs; OneSignal-Android-SDK ${{ inputs.android_version }}, OneSignal-iOS-SDK ${{ inputs.ios_version }}" \
203151
--body "### 🧩 Native SDK Updates
204-
- Android: ${{ inputs.android_version }}
205-
- iOS: ${{ inputs.ios_version }}
152+
- **Android:** ${{ inputs.android_version }}
153+
- **iOS:** ${{ inputs.ios_version }}
206154
207-
This PR updates Unity dependency files and inserts a detailed changelog entry under **[Unreleased]** in the Unity SDK changelog." \
155+
This PR updates Unity dependency files and adds detailed native SDK changelogs under **[Unreleased]** in the Unity CHANGELOG." \
208156
--base main \
209157
--label "native-sdk-bump"

0 commit comments

Comments
 (0)