Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
f3b9c25
ci: create release PR
jinliu9508 Oct 23, 2025
2ad8714
test on the working branch
jinliu9508 Oct 27, 2025
6d6ac00
fix version
jinliu9508 Oct 29, 2025
1f885a5
use buidalon unity setup
jinliu9508 Oct 29, 2025
531d544
add activation
jinliu9508 Nov 4, 2025
31217fa
remove cache
jinliu9508 Nov 4, 2025
6d1f786
update version name
jinliu9508 Nov 4, 2025
29d50f6
remove timeout
jinliu9508 Oct 30, 2025
7cde355
cache unity editor
jinliu9508 Nov 5, 2025
b5b5742
use shared action for creating release PR
jinliu9508 Nov 5, 2025
ea8e38e
clear unity locks
jinliu9508 Nov 5, 2025
3975a72
add build pipeline package
jinliu9508 Nov 6, 2025
a843f7d
Revert "add build pipeline package"
jinliu9508 Nov 6, 2025
7df5e14
remove cache
jinliu9508 Nov 6, 2025
76613a4
Revert "remove cache"
jinliu9508 Nov 6, 2025
7bd4ae0
change editor version
jinliu9508 Nov 6, 2025
ee41a30
Revert "change editor version"
jinliu9508 Nov 6, 2025
a5cca03
silent crashes in executeMethod
jinliu9508 Nov 6, 2025
6be44ff
Revert "silent crashes in executeMethod"
jinliu9508 Nov 6, 2025
d65e6da
update ExternalDependencyManager to 1.2.186
jinliu9508 Nov 6, 2025
f49e096
Revert "update ExternalDependencyManager to 1.2.186"
jinliu9508 Nov 6, 2025
3444e65
resolve unity pacakge
jinliu9508 Nov 6, 2025
fdf9f21
Revert "resolve unity pacakge"
jinliu9508 Nov 6, 2025
0d822b4
disable parallel compilation
jinliu9508 Nov 6, 2025
9920020
use ubuntu
jinliu9508 Nov 6, 2025
08d2719
add github token for drafting release
jinliu9508 Nov 6, 2025
3f3d04f
find package path
jinliu9508 Nov 6, 2025
be09624
add some log
jinliu9508 Nov 6, 2025
e77b30b
debug: find unitypackage
jinliu9508 Nov 7, 2025
b0dcb4f
cleanup: revert change in composeRelease.sh
jinliu9508 Nov 7, 2025
c7d9d8c
cleanup: use the composed environment setup
jinliu9508 Nov 7, 2025
4bb2b97
fix change log format
jinliu9508 Nov 7, 2025
6461025
optimize token usage
jinliu9508 Nov 7, 2025
0e33df0
followup: remove action.yml
jinliu9508 Nov 7, 2025
accaa9e
pass target branch
jinliu9508 Nov 7, 2025
e435557
reorder changelog
jinliu9508 Nov 7, 2025
4dd7698
move release part to a separate workflow
jinliu9508 Nov 12, 2025
64defcf
include release note to CHANGELOG
jinliu9508 Nov 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 158 additions & 0 deletions .github/workflows/create-release-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
name: Create Unity Release PR

on:
# For making a release pr from android / ios sdk actions
workflow_call:
inputs:
unity_version:
description: 'New Unity Version (e.g., 5.2.15 or 5.2.15-beta.1)'
required: true
type: string
android_version:
description: 'New Android SDK Version (e.g., 2.3.0). Leave blank to skip.'
required: false
type: string
ios_version:
description: 'New iOS SDK Version (e.g., 1.5.0). Leave blank to skip.'
required: false
type: string
target_branch:
description: 'Target branch to create the release PR on. Defaults to main.'
required: false
type: string
default: main

# For making a release pr from github actions
workflow_dispatch:
inputs:
unity_version:
description: 'New Unity Version (e.g., 5.2.15 or 5.2.15-beta.1)'
required: true
type: string
android_version:
description: 'New Android SDK Version (e.g., 2.3.0). Leave blank to skip.'
required: false
type: string
ios_version:
description: 'New iOS SDK Version (e.g., 1.5.0). Leave blank to skip.'
required: false
type: string
target_branch:
description: 'Target branch to create the release PR on. Defaults to main.'
required: false
type: string
default: main

permissions:
contents: write
pull-requests: write

jobs:
prep:
uses: OneSignal/sdk-actions/.github/workflows/prep-release.yml@main
with:
version: ${{ inputs.unity_version }}

# Unity specific steps
update-version:
needs: prep
runs-on: ubuntu-latest
outputs:
unity_from: ${{ steps.current_versions.outputs.unity_from }}
ios_from: ${{ steps.current_versions.outputs.ios_from }}
android_from: ${{ steps.current_versions.outputs.android_from }}

steps:
- name: Checkout
uses: actions/checkout@v5
with:
ref: ${{ needs.prep.outputs.release_branch }}

- name: Get current native SDK versions
id: current_versions
run: |
CURRENT_VERSION=$(cat OneSignalExample/Assets/OneSignal/VERSION | tr -d '\n\r' | xargs)
ANDROID_VERSION=$(grep -oE 'spec="com.onesignal:OneSignal:[0-9]+\.[0-9]+\.[0-9]+"' com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml | sed -E 's/.*OneSignal:([0-9]+\.[0-9]+\.[0-9]+)".*/\1/' | head -1)
IOS_VERSION=$(grep -oE 'version="[0-9.]+"' com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml | grep -oE '[0-9.]+' | head -1)
echo "unity_from=${CURRENT_VERSION}" >> $GITHUB_OUTPUT
echo "android_from=${ANDROID_VERSION}" >> $GITHUB_OUTPUT
echo "ios_from=${IOS_VERSION}" >> $GITHUB_OUTPUT

- name: Update Android SDK version
if: inputs.android_version != ''
run: |
VERSION="${{ inputs.android_version }}"
# validate the version exists on GitHub
curl -sfH "Authorization: token ${{ github.token }}" "https://api.github.com/repos/OneSignal/OneSignal-Android-SDK/releases/tags/${VERSION}" >/dev/null || { echo "✗ Android SDK version ${VERSION} not found"; exit 1; }
sed -i -E "s/spec=\"com\.onesignal:OneSignal:[0-9][0-9.]*\"/spec=\"com.onesignal:OneSignal:$VERSION\"/" com.onesignal.unity.android/Editor/OneSignalAndroidDependencies.xml
sed -i -E "s/'com\.onesignal:OneSignal:[0-9][0-9.]*'/'com.onesignal:OneSignal:$VERSION'/" OneSignalExample/Assets/Plugins/Android/mainTemplate.gradle
sed -i -E "s/<package>com\.onesignal:OneSignal:[0-9][0-9.]*<\/package>/<package>com.onesignal:OneSignal:$VERSION<\/package>/" OneSignalExample/ProjectSettings/AndroidResolverDependencies.xml

- name: Update iOS SDK version
if: inputs.ios_version != ''
run: |
VERSION="${{ inputs.ios_version }}"
# validate the version exists on GitHub
curl -sfH "Authorization: token ${{ github.token }}" "https://api.github.com/repos/OneSignal/OneSignal-iOS-SDK/releases/tags/${VERSION}" >/dev/null || { echo "✗ iOS SDK version ${VERSION} not found"; exit 1; }
sed -i -E "s/version=\"[0-9][0-9.]*\"/version=\"$VERSION\"/" com.onesignal.unity.ios/Editor/OneSignaliOSDependencies.xml

- name: Update Unity SDK version
run: |
PADDED_VERSION=$(printf "%06d" $(echo "${{ inputs.unity_version }}" | sed 's/[^0-9]//g'))
printf "%s" "${{ inputs.unity_version }}" > OneSignalExample/Assets/OneSignal/VERSION
for file in com.onesignal.unity.core/package.json com.onesignal.unity.android/package.json com.onesignal.unity.ios/package.json; do
sed -i "s/\"version\": \".*\"/\"version\": \"${{ inputs.unity_version }}\"/" "$file"
sed -i "s/\"com.onesignal.unity.core\": \".*\"/\"com.onesignal.unity.core\": \"${{ inputs.unity_version }}\"/" "$file"
done
sed -i "s/public const string Version = \".*\"/public const string Version = \"${{ inputs.unity_version }}\"/" com.onesignal.unity.core/Runtime/OneSignal.cs
sed -i "s/public const string VersionHeader = \".*\"/public const string VersionHeader = \"${PADDED_VERSION}\"/" com.onesignal.unity.core/Runtime/OneSignalPlatform.cs
for asm in OneSignalExample/Assets/OneSignal/Example/OneSignal.UnityPackage.Example.asmdef OneSignalExample/Assets/OneSignal/Editor/OneSignal.UnityPackage.Editor.asmdef OneSignalExample/Assets/OneSignal/Attribution/OneSignal.UnityPackage.Attribution.asmdef; do
sed -i "s/\"expression\": \".*\"/\"expression\": \"${{ inputs.unity_version }}\"/" "$asm"
done
sed -i "s/\"com.onesignal.unity.core\": \"[0-9.]\+\"/\"com.onesignal.unity.core\": \"${{ inputs.unity_version }}\"/g" OneSignalExample/Packages/packages-lock.json
sed -i "s/bundleVersion: .*/bundleVersion: ${{ inputs.unity_version }}/" OneSignalExample/ProjectSettings/ProjectSettings.asset
sed -i "s/setSdkVersion:@\"[0-9]*\"/setSdkVersion:@\"${PADDED_VERSION}\"/" com.onesignal.unity.ios/Runtime/Plugins/iOS/UIApplication+OneSignalUnity.mm

git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add . && git commit -m "Release ${{ inputs.unity_version }}" && git push

create-pr:
needs: [prep, update-version]
uses: OneSignal/sdk-actions/.github/workflows/create-release.yml@main
with:
release_branch: ${{ needs.prep.outputs.release_branch }}
target_branch: ${{ inputs.target_branch }}
android_from: ${{ needs.update-version.outputs.android_from }}
android_to: ${{ inputs.android_version }}
ios_from: ${{ needs.update-version.outputs.ios_from }}
ios_to: ${{ inputs.ios_version }}

update-changelog:
needs: [prep, create-pr]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
ref: ${{ needs.prep.outputs.release_branch }}

- name: Get PR release notes
id: notes
run: |
sudo apt-get update && sudo apt-get install -y gh || true
PR_NUMBER=$(gh pr list --head "${{ needs.prep.outputs.release_branch }}" --json number -q '.[0].number' || echo "")
if [ -z "$PR_NUMBER" ]; then echo "RELEASE_NOTES=" >> $GITHUB_ENV; exit 0; fi
cleaned_notes=$(gh pr view "$PR_NUMBER" --json body -q '.body' | awk 'BEGIN{found=0} /^- Update/{found=1} /^<!-- Reviewable:start -->/{found=0;next} found' | sed '/^- - -$/d' | sed '/^[[:space:]]*$/d')
echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
echo "$cleaned_notes" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV

- name: Update CHANGELOG.md
run: |
awk -v ver="${{ inputs.unity_version }}" -v notes="$RELEASE_NOTES" \
'/^## \[Unreleased\]/ { print $0; print "## [" ver "]\n### Changed"; print notes "\n"; next } { print $0 }' \
OneSignalExample/Assets/OneSignal/CHANGELOG.md > /tmp/changelog.tmp && mv /tmp/changelog.tmp OneSignalExample/Assets/OneSignal/CHANGELOG.md
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add . && git commit -m "Update CHANGELOG.md for ${{ inputs.unity_version }}" && git push
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,24 @@ public static void UpdateProjectVersion()
[MenuItem("OneSignal/ExportUnityPackage")]
public static void ExportUnityPackage()
{
UnityEngine.Debug.Log($"[OneSignalPackagePublisher] start exporting package");
AssetDatabase.Refresh();
var packageVersion = File.ReadAllText(VersionFilePath);
var packageName = $"OneSignal-v{packageVersion}.unitypackage";

UnityEngine.Debug.Log($"[OneSignalPackagePublisher] package name: {packageName}");

string[] filePaths = _filePaths();
UnityEngine.Debug.Log(
$"[OneSignalPackagePublisher] Found {filePaths.Length} files/directories to include:"
);
foreach (var path in filePaths)
{
UnityEngine.Debug.Log($"[OneSignalPackagePublisher] - {path}");
}

AssetDatabase.ExportPackage(
_filePaths(),
filePaths,
packageName,
ExportPackageOptions.Recurse | ExportPackageOptions.IncludeDependencies
);
Expand All @@ -68,6 +80,9 @@ public static void ExportUnityPackage()
private static string[] _filePaths()
{
var files = Directory.GetFileSystemEntries(PackagePath);
UnityEngine.Debug.Log(
$"[OneSignalPackagePublisher] Getting file paths from: {PackagePath}"
);
var pathsToInclude = files.Where(file =>
{
if (file.EndsWith(".meta"))
Expand Down
Loading