From a380dedbc4551d54d5dc2e12e97b4aa7ff603a03 Mon Sep 17 00:00:00 2001 From: Fadi George Date: Thu, 4 Dec 2025 12:42:03 -0800 Subject: [PATCH 1/4] add job to create wrapper prs --- .github/workflows/publish-release.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index b67bb7a02..c3d02872e 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -8,13 +8,14 @@ on: workflow_dispatch: inputs: ref: - description: 'Branch or commit SHA to run on (e.g., main, 5.3-main)' + description: "Branch or commit SHA to run on (e.g., main, 5.3-main)" type: string required: false - default: 'main' + default: "main" permissions: contents: write + pull-requests: write concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -22,6 +23,8 @@ concurrency: jobs: publish: + outputs: + sdk_version: ${{ steps.extract_version.outputs.version }} runs-on: macos-13 env: @@ -63,7 +66,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.0' + ruby-version: "3.0" - name: Install CocoaPods run: | @@ -181,3 +184,11 @@ jobs: echo "📦 CocoaPods OneSignalXCFramework: https://cocoapods.org/pods/OneSignalXCFramework" echo "🔗 iOS SDK Release: https://github.com/OneSignal/OneSignal-iOS-SDK/releases/tag/$VERSION" echo "🔗 XCFramework Release: https://github.com/OneSignal/OneSignal-XCFramework/releases/tag/$VERSION" + + wrapper_prs: + needs: publish + uses: OneSignal/sdk-actions/.github/workflows/create-wrapper-prs.yml@main + secrets: + GH_PUSH_TOKEN: ${{ secrets.GH_PUSH_TOKEN }} + with: + ios_version: ${{ needs.publish.outputs.sdk_version }} From 69f8c464b843f227d9e00b196e2bc9b2f7c8052f Mon Sep 17 00:00:00 2001 From: Fadi George Date: Thu, 4 Dec 2025 13:33:05 -0800 Subject: [PATCH 2/4] for testing action --- .github/workflows/publish-release.yml | 129 -------------------------- 1 file changed, 129 deletions(-) diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index c3d02872e..68ad1e719 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -56,135 +56,6 @@ jobs: echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Extracted version: $VERSION" - - name: 📋 Display Configuration - run: | - echo "============================================" - echo "📦 Release Version: ${{ steps.extract_version.outputs.version }}" - echo "🌿 Branch: ${{ steps.detect_branch.outputs.branch }}" - echo "============================================" - - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: "3.0" - - - name: Install CocoaPods - run: | - gem install cocoapods - pod --version - - - name: Validate OneSignal.podspec - run: | - echo "Validating OneSignal.podspec..." - pod spec lint OneSignal.podspec --allow-warnings - - - name: Validate OneSignalXCFramework.podspec - run: | - echo "Validating OneSignalXCFramework.podspec..." - pod spec lint OneSignalXCFramework.podspec --allow-warnings - - - name: Publish OneSignal.podspec to CocoaPods Trunk - run: | - echo "Publishing OneSignal.podspec to CocoaPods Trunk..." - pod trunk push OneSignal.podspec --allow-warnings - - - name: Publish OneSignalXCFramework.podspec to CocoaPods Trunk - run: | - echo "Publishing OneSignalXCFramework.podspec to CocoaPods Trunk..." - pod trunk push OneSignalXCFramework.podspec --allow-warnings - - - name: ✅ CocoaPods Published - run: | - VERSION="${{ steps.extract_version.outputs.version }}" - echo "============================================" - echo "✅ Successfully published version $VERSION to CocoaPods!" - echo "============================================" - echo "📦 OneSignal: https://cocoapods.org/pods/OneSignal" - echo "📦 OneSignalXCFramework: https://cocoapods.org/pods/OneSignalXCFramework" - - - name: Checkout OneSignal-XCFramework - uses: actions/checkout@v4 - with: - repository: OneSignal/OneSignal-XCFramework - ref: ${{ steps.detect_branch.outputs.branch }} - path: xcframework-repo - fetch-depth: 0 - token: ${{ secrets.PAT_TOKEN_ONESIGNAL_XCFRAMEWORK }} - - - name: Get iOS SDK Release Body - id: get_ios_release - run: | - VERSION="${{ steps.extract_version.outputs.version }}" - - # Fetch the release body from OneSignal-iOS-SDK - if gh release view "$VERSION" --repo OneSignal/OneSignal-iOS-SDK --json body --jq '.body' > ios_release_body.md 2>/dev/null; then - echo "✅ Found iOS SDK release for version $VERSION" - echo "found=true" >> $GITHUB_OUTPUT - else - echo "⚠️ No iOS SDK release found for version $VERSION" - echo "found=false" >> $GITHUB_OUTPUT - echo "" > ios_release_body.md - fi - - - name: Create GitHub Release for OneSignal-XCFramework - env: - GH_TOKEN: ${{ secrets.PAT_TOKEN_ONESIGNAL_XCFRAMEWORK }} - run: | - VERSION="${{ steps.extract_version.outputs.version }}" - BRANCH="${{ steps.detect_branch.outputs.branch }}" - - cd xcframework-repo - - # Configure git - git config --local user.email "noreply@onesignal.com" - git config --local user.name "github-actions[bot]" - - # Create and push tag - git tag -a "$VERSION" -m "Release $VERSION" - git push origin "$VERSION" - - echo "✅ Created and pushed tag: $VERSION to OneSignal-XCFramework" - - # Use iOS SDK release body if available, otherwise create default release notes - if [[ "${{ steps.get_ios_release.outputs.found }}" == "true" ]] && [[ -s ../ios_release_body.md ]]; then - echo "Using release notes from iOS SDK release" - cp ../ios_release_body.md release_notes.md - else - echo "No iOS SDK release body found, generating default release notes" - echo "## 🔖 Release $VERSION" > release_notes.md - echo "" >> release_notes.md - echo "This release corresponds to [OneSignal-iOS-SDK $VERSION](https://github.com/OneSignal/OneSignal-iOS-SDK/releases/tag/$VERSION)" >> release_notes.md - fi - - # Determine if this is a pre-release - PRERELEASE_FLAG="" - if [[ "$VERSION" == *"alpha"* ]] || [[ "$VERSION" == *"beta"* ]]; then - PRERELEASE_FLAG="--prerelease" - echo "Marking as pre-release (alpha/beta detected)" - fi - - # Create GitHub release - gh release create "$VERSION" \ - --repo OneSignal/OneSignal-XCFramework \ - --title "$VERSION" \ - --notes-file release_notes.md \ - --target "$BRANCH" \ - $PRERELEASE_FLAG - - echo "✅ GitHub release created successfully for OneSignal-XCFramework!" - echo "🔗 https://github.com/OneSignal/OneSignal-XCFramework/releases/tag/$VERSION" - - - name: ✅ All Steps Complete - run: | - VERSION="${{ steps.extract_version.outputs.version }}" - echo "============================================" - echo "✅ Successfully completed all release steps for version $VERSION" - echo "============================================" - echo "📦 CocoaPods OneSignal: https://cocoapods.org/pods/OneSignal" - echo "📦 CocoaPods OneSignalXCFramework: https://cocoapods.org/pods/OneSignalXCFramework" - echo "🔗 iOS SDK Release: https://github.com/OneSignal/OneSignal-iOS-SDK/releases/tag/$VERSION" - echo "🔗 XCFramework Release: https://github.com/OneSignal/OneSignal-XCFramework/releases/tag/$VERSION" - wrapper_prs: needs: publish uses: OneSignal/sdk-actions/.github/workflows/create-wrapper-prs.yml@main From 95af34fbddbf4d9b72b2540db5398c654f29f31f Mon Sep 17 00:00:00 2001 From: Fadi George Date: Thu, 4 Dec 2025 16:01:32 -0800 Subject: [PATCH 3/4] use shared setup git user action --- .github/workflows/create-release-prs.yml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/.github/workflows/create-release-prs.yml b/.github/workflows/create-release-prs.yml index 2af562d9c..458430a0b 100644 --- a/.github/workflows/create-release-prs.yml +++ b/.github/workflows/create-release-prs.yml @@ -14,10 +14,10 @@ on: type: string required: true base_branch: - description: 'Target branch for the PR (e.g. main for regular releases, 5.3-main for 5.3.x releases)' + description: "Target branch for the PR (e.g. main for regular releases, 5.3-main for 5.3.x releases)" type: string required: false - default: 'main' + default: "main" permissions: contents: write @@ -60,10 +60,8 @@ jobs: ref: ${{ needs.prep.outputs.release_branch }} fetch-depth: 0 - - name: Configure Git - run: | - git config --local user.email "noreply@onesignal.com" - git config --local user.name "github-actions[bot]" + - name: Setup Git User + uses: OneSignal/sdk-actions/.github/actions/setup-git-user@main - name: Extract Current Version id: extract_version @@ -75,7 +73,7 @@ jobs: - name: Setup Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: '15.2' + xcode-version: "15.2" - name: Install the Apple distribution certificate and provisioning profile (OneSignal) uses: apple-actions/import-codesign-certs@v2 @@ -194,6 +192,9 @@ jobs: path: xcframework-repo token: ${{ secrets.PAT_TOKEN_ONESIGNAL_XCFRAMEWORK }} + - name: Setup Git User + uses: OneSignal/sdk-actions/.github/actions/setup-git-user@main + - name: Update Package.swift in XCFramework Repository run: | # Copy Package.swift from iOS SDK to XCFramework repo @@ -211,10 +212,6 @@ jobs: # Create release branch git checkout -b $RELEASE_BRANCH - # Configure git - git config --local user.email "noreply@onesignal.com" - git config --local user.name "github-actions[bot]" - # Commit changes git commit -am "Release $VERSION" From ed230a37a337f38241a9e3fbf780f590fdc91efa Mon Sep 17 00:00:00 2001 From: Fadi George Date: Thu, 4 Dec 2025 16:16:18 -0800 Subject: [PATCH 4/4] Revert "for testing action" This reverts commit 69f8c464b843f227d9e00b196e2bc9b2f7c8052f. --- .github/workflows/publish-release.yml | 129 ++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 68ad1e719..c3d02872e 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -56,6 +56,135 @@ jobs: echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Extracted version: $VERSION" + - name: 📋 Display Configuration + run: | + echo "============================================" + echo "📦 Release Version: ${{ steps.extract_version.outputs.version }}" + echo "🌿 Branch: ${{ steps.detect_branch.outputs.branch }}" + echo "============================================" + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.0" + + - name: Install CocoaPods + run: | + gem install cocoapods + pod --version + + - name: Validate OneSignal.podspec + run: | + echo "Validating OneSignal.podspec..." + pod spec lint OneSignal.podspec --allow-warnings + + - name: Validate OneSignalXCFramework.podspec + run: | + echo "Validating OneSignalXCFramework.podspec..." + pod spec lint OneSignalXCFramework.podspec --allow-warnings + + - name: Publish OneSignal.podspec to CocoaPods Trunk + run: | + echo "Publishing OneSignal.podspec to CocoaPods Trunk..." + pod trunk push OneSignal.podspec --allow-warnings + + - name: Publish OneSignalXCFramework.podspec to CocoaPods Trunk + run: | + echo "Publishing OneSignalXCFramework.podspec to CocoaPods Trunk..." + pod trunk push OneSignalXCFramework.podspec --allow-warnings + + - name: ✅ CocoaPods Published + run: | + VERSION="${{ steps.extract_version.outputs.version }}" + echo "============================================" + echo "✅ Successfully published version $VERSION to CocoaPods!" + echo "============================================" + echo "📦 OneSignal: https://cocoapods.org/pods/OneSignal" + echo "📦 OneSignalXCFramework: https://cocoapods.org/pods/OneSignalXCFramework" + + - name: Checkout OneSignal-XCFramework + uses: actions/checkout@v4 + with: + repository: OneSignal/OneSignal-XCFramework + ref: ${{ steps.detect_branch.outputs.branch }} + path: xcframework-repo + fetch-depth: 0 + token: ${{ secrets.PAT_TOKEN_ONESIGNAL_XCFRAMEWORK }} + + - name: Get iOS SDK Release Body + id: get_ios_release + run: | + VERSION="${{ steps.extract_version.outputs.version }}" + + # Fetch the release body from OneSignal-iOS-SDK + if gh release view "$VERSION" --repo OneSignal/OneSignal-iOS-SDK --json body --jq '.body' > ios_release_body.md 2>/dev/null; then + echo "✅ Found iOS SDK release for version $VERSION" + echo "found=true" >> $GITHUB_OUTPUT + else + echo "⚠️ No iOS SDK release found for version $VERSION" + echo "found=false" >> $GITHUB_OUTPUT + echo "" > ios_release_body.md + fi + + - name: Create GitHub Release for OneSignal-XCFramework + env: + GH_TOKEN: ${{ secrets.PAT_TOKEN_ONESIGNAL_XCFRAMEWORK }} + run: | + VERSION="${{ steps.extract_version.outputs.version }}" + BRANCH="${{ steps.detect_branch.outputs.branch }}" + + cd xcframework-repo + + # Configure git + git config --local user.email "noreply@onesignal.com" + git config --local user.name "github-actions[bot]" + + # Create and push tag + git tag -a "$VERSION" -m "Release $VERSION" + git push origin "$VERSION" + + echo "✅ Created and pushed tag: $VERSION to OneSignal-XCFramework" + + # Use iOS SDK release body if available, otherwise create default release notes + if [[ "${{ steps.get_ios_release.outputs.found }}" == "true" ]] && [[ -s ../ios_release_body.md ]]; then + echo "Using release notes from iOS SDK release" + cp ../ios_release_body.md release_notes.md + else + echo "No iOS SDK release body found, generating default release notes" + echo "## 🔖 Release $VERSION" > release_notes.md + echo "" >> release_notes.md + echo "This release corresponds to [OneSignal-iOS-SDK $VERSION](https://github.com/OneSignal/OneSignal-iOS-SDK/releases/tag/$VERSION)" >> release_notes.md + fi + + # Determine if this is a pre-release + PRERELEASE_FLAG="" + if [[ "$VERSION" == *"alpha"* ]] || [[ "$VERSION" == *"beta"* ]]; then + PRERELEASE_FLAG="--prerelease" + echo "Marking as pre-release (alpha/beta detected)" + fi + + # Create GitHub release + gh release create "$VERSION" \ + --repo OneSignal/OneSignal-XCFramework \ + --title "$VERSION" \ + --notes-file release_notes.md \ + --target "$BRANCH" \ + $PRERELEASE_FLAG + + echo "✅ GitHub release created successfully for OneSignal-XCFramework!" + echo "🔗 https://github.com/OneSignal/OneSignal-XCFramework/releases/tag/$VERSION" + + - name: ✅ All Steps Complete + run: | + VERSION="${{ steps.extract_version.outputs.version }}" + echo "============================================" + echo "✅ Successfully completed all release steps for version $VERSION" + echo "============================================" + echo "📦 CocoaPods OneSignal: https://cocoapods.org/pods/OneSignal" + echo "📦 CocoaPods OneSignalXCFramework: https://cocoapods.org/pods/OneSignalXCFramework" + echo "🔗 iOS SDK Release: https://github.com/OneSignal/OneSignal-iOS-SDK/releases/tag/$VERSION" + echo "🔗 XCFramework Release: https://github.com/OneSignal/OneSignal-XCFramework/releases/tag/$VERSION" + wrapper_prs: needs: publish uses: OneSignal/sdk-actions/.github/workflows/create-wrapper-prs.yml@main