-
Notifications
You must be signed in to change notification settings - Fork 62
148 lines (126 loc) · 6.4 KB
/
Copy pathbump-native-version.yml
File metadata and controls
148 lines (126 loc) · 6.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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"