diff --git a/.github/workflows/release-draft.yml b/.github/workflows/release-draft.yml new file mode 100644 index 0000000..8a1a6df --- /dev/null +++ b/.github/workflows/release-draft.yml @@ -0,0 +1,76 @@ +name: Release Draft + +on: + workflow_dispatch: # checkov:skip=CKV_GHA_7 + inputs: + bump-type: + description: Version bump type + required: true + type: choice + options: + - patch + - minor + - major + +permissions: + contents: write + pull-requests: write + +jobs: + create-release-pr: + name: Create Release PR + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Read current version + id: current-version + run: echo "version=$(cat VERSION)" >> "$GITHUB_OUTPUT" + + - name: Bump version + id: bump-version + uses: actions-ecosystem/action-bump-semver@34e334551143a5301f38c830e44a22273c6ff5c5 # v1.0.0 + with: + current_version: ${{ steps.current-version.outputs.version }} + level: ${{ github.event.inputs.bump-type || 'patch' }} + + - name: Write new version to VERSION + run: echo "${{ steps.bump-version.outputs.new_version }}" > VERSION + + - name: Update package.json version + run: npm version "${{ steps.bump-version.outputs.new_version }}" --no-git-tag-version + + - name: Generate changelog from git history + id: changelog + uses: ROKT/rokt-workflows/actions/generate-changelog@main + with: + version: ${{ steps.bump-version.outputs.new_version }} + + - name: Generate GitHub App token + id: generate-token + uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 + with: + app-id: ${{ secrets.SDK_RELEASE_GITHUB_APP_ID }} + private-key: ${{ secrets.SDK_RELEASE_GITHUB_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + repositories: | + react-native-mparticle + + - name: Create release PR + uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 + with: + token: ${{ steps.generate-token.outputs.token }} + branch: release/${{ steps.bump-version.outputs.new_version }} + title: 'chore: release ${{ steps.bump-version.outputs.new_version }}' + body: | + ## Release ${{ steps.bump-version.outputs.new_version }} + + These files should have changed during the release, if they didn't then this is likely an issue and should be investigated: + - package.json + - CHANGELOG.md + + ${{ steps.changelog.outputs.release-notes }} + commit-message: 'chore: bump version to ${{ steps.bump-version.outputs.new_version }}' diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml new file mode 100644 index 0000000..a454d56 --- /dev/null +++ b/.github/workflows/release-publish.yml @@ -0,0 +1,89 @@ +name: Release Publish + +on: + push: + branches: + - main + paths: + - VERSION + +permissions: + contents: write + id-token: write # Required for npm OIDC trusted publishing + +jobs: + react-tests: + name: Run React Native Unit Tests + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 24 + cache: yarn + cache-dependency-path: yarn.lock + + - name: Install node modules + run: yarn install + + - name: Run tests + run: yarn test + + android-unit-tests: + name: Run Android Unit Tests + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Run Android Unit Tests + run: cd android && ./gradlew test + + publish: + name: Publish to npm and Create GitHub Release + runs-on: ubuntu-latest + needs: [react-tests, android-unit-tests] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Read version from VERSION + id: version + run: echo "version=$(cat VERSION)" >> "$GITHUB_OUTPUT" + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 24 + registry-url: https://registry.npmjs.org + cache: yarn + cache-dependency-path: yarn.lock + + - name: Install node modules + run: yarn install + + - name: Build SDK + run: yarn build + + - name: Ensure npm CLI supports OIDC + run: npm install -g npm@latest + + - name: Extract release notes from CHANGELOG.md + id: release-notes + uses: ffurrer2/extract-release-notes@202313ec7461b6b9e401996714484690ab1ae105 + with: + release_notes_file: RELEASE_NOTES.md + + - name: Publish to npm + run: npm publish --provenance + + - name: Create GitHub Release + uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b + with: + tag: ${{ steps.version.outputs.version }} + name: ${{ steps.version.outputs.version }} + bodyFile: RELEASE_NOTES.md + commit: ${{ github.sha }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index dbdac5b..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Release SDK - -on: - workflow_dispatch - -jobs: - # SDK release is done from public/main branch. - confirm-main-branch: - name: Confirm release is run on public/main branch - uses: mParticle/mparticle-workflows/.github/workflows/sdk-release-repo-branch-check.yml@main - - # All new code is stored in internal/development. Release from public/main will merge changes from internal/development into - # public/main, then run semantic-release on public/main to update changelog and release notes. Before semantic-release publishes - # to npm, it builds the dist/ folder. Finally, commits from public/main are synced back to internal/main and internal/development. - - react-tests: - name: Run React Native Unit Tests - runs-on: ubuntu-latest - needs: ['confirm-main-branch'] - steps: - - name: Checkout - uses: actions/checkout@v6 - - uses: actions/setup-node@v6.2.0 - with: - node-version: 24 - cache: yarn - cache-dependency-path: yarn.lock - - - name: Install node modules - run: yarn install - - - name: Run test - run: yarn test - - android-unit-tests: - name: Run Android Unit Tests - runs-on: ubuntu-latest - needs: ['confirm-main-branch'] - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Run Android Unit Tests - run: echo "pwd"; pwd; echo "ls:"; ls; cd android; ./gradlew test - - release-and-sync-repos: - name: Release and Sync Repos - runs-on: ubuntu-latest - needs: ['android-unit-tests', 'react-tests'] - # OIDC permissions for npm trusted publishing - permissions: - contents: write - issues: write - pull-requests: write - id-token: write # Required for OIDC authentication with npm - steps: - - name: Checkout internal/development - uses: actions/checkout@v6 - - - name: Setup Node.js - uses: actions/setup-node@v6.2.0 - with: - node-version: 24 - registry-url: 'https://registry.npmjs.org' - - - name: Install node modules - run: yarn install - - - name: Ensure npm CLI supports OIDC - run: npm install -g npm@latest - - - name: Build SDK - run: yarn build - - - name: Release - run: ./release.sh \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0397329 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,385 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + +- Add SPM hybrid bridge for mParticle-Apple-SDK iOS dependency (#283) +- Add Expo config plugin for mParticle integration (#270) + +### Fixed + +- Fix React Native Codegen issue with version 0.84 (#284) +- Prevent app crash in Release builds on iOS (#286) +- Log nil bridge before addUIBlock in New Architecture (#287) + +## [2.8.1] - 2025-09-04 + +### Fixed + +- Remove userIdentities key expectation in native iOS logic (#255) +- Use eventName in logEvent for Android (#254) + +## [2.8.0] - 2025-08-07 + +### Changed + +- Updated GitHub workflows for SDK release + +## [2.7.13] - 2024-11-08 + +### Fixed + +- Fix Swift File Support (#211) + +## [2.7.12] - 2024-06-11 + +### Fixed + +- Fix setVariant on Product (#207) + +## [2.7.11] - 2024-04-03 + +### Fixed + +- Add Static Library Install Steps (#204) + +## [2.7.10] - 2024-03-12 + +### Added + +- Add setLocation function (#196) + +## [2.7.9] - 2023-12-07 + +### Added + +- Add Media Event Type (#176) + +## [2.7.8] - 2023-01-10 + +### Added + +- Allow uploadInterval to be set manually (#95) +- Add Manual Upload (#86) + +## [2.7.7] - 2022-10-19 + +### Fixed + +- Correct quantity value conversion (#82) + +## [2.7.6] - 2022-08-31 + +### Fixed + +- Parse string values for transaction attributes to numbers (#81) + +## [2.7.5] - 2022-07-28 + +### Fixed + +- Update Android impression/promotion handling (#76) + +## [2.7.4] - 2022-07-21 + +### Fixed + +- Update podspec for tvOS support + +## [2.7.3] - 2022-07-19 + +### Fixed + +- Update podspec + +## [2.7.2] - 2022-07-14 + +### Fixed + +- Support tvOS implementation (#73) + +## [2.7.1] - 2022-05-18 + +### Fixed + +- Fix Android info() usages + +## [2.7.0] - 2022-05-18 + +### Fixed + +- Serialize Android getUserAttributes results to WritableMap + +## [2.6.2] - 2022-03-31 + +### Added + +- Add Android mapping for Commerce Events (currency, checkoutStep, checkoutOptions) (#63) +- Add upload bypass option for logScreen (#57) + +## [2.6.1] - 2022-01-10 + +### Fixed + +- Remove extra ProductActionType check (#59) +- Add custom attributes for ecommerce events (#58) + +## [2.6.0] - 2021-09-22 + +### Fixed + +- Remove deprecated jcenter references + +## [2.5.0] - 2021-09-15 + +### Fixed + +- Fix conditional around shouldUploadEvent (#51) +- Fix Boolean map customAttribute values crash on Android (#49) + +## [2.4.13] - 2021-09-07 + +### Added + +- Add shouldUploadEvent option for Android and iOS + +## [2.4.12] - 2021-03-24 + +### Fixed + +- Fix nullability issue for ATT timestamp + +## [2.4.11] - 2021-03-23 + +### Changed + +- Update UserIdentity enum + +## [2.4.10] - 2021-03-17 + +### Added + +- Add GetUserAttributes + +## [2.4.9] - 2021-02-25 + +### Added + +- Add ATT constants + +## [2.4.8] - 2021-02-25 + +### Added + +- ATT (App Tracking Transparency) support + +## [2.4.7] - 2020-12-01 + +### Added + +- Add error for invalid identities used in an identity request + +## [2.4.6] - 2020-11-02 + +### Fixed + +- Fix identity casting issue + +## [2.4.5] - 2020-10-14 + +### Fixed + +- Fix merge issue around getUserIdentities + +## [2.4.4] - 2020-09-25 + +### Changed + +- Update for iOS 14 + +## [2.4.3] - 2020-08-13 + +### Added + +- Add CCPA support + +## [2.4.2] - 2019-12-09 + +### Fixed + +- Implement null check for session on iOS + +## [2.4.1] - 2019-11-06 + +### Fixed + +- Fix Android UserIdentities serialization + +## [2.4.0] - 2019-10-21 + +### Added + +- Add Consent State support for Android + +## [2.3.3] - 2019-10-09 + +### Fixed + +- Add null-check for Session object on Android + +## [2.3.2] - 2019-09-26 + +### Fixed + +- Add @ReactMethod decorator to getSession method + +## [2.3.1] - 2019-08-27 + +### Added + +- Implement getSession method + +## [2.3.0] - 2019-07-09 + +### Added + +- Implement Alias functionality + +## [2.2.3] - 2019-06-18 + +### Fixed + +- Use setUserAttributeList to set array values for iOS + +## [2.2.2] - 2019-06-13 + +### Fixed + +- Fix user identity conversion + +## [2.2.1] - 2019-05-28 + +### Fixed + +- Fix null User crash + +## [2.2.0] - 2019-04-25 + +### Added + +- Add Consent State support for iOS + +## [2.1.3] - 2019-02-06 + +### Added + +- Expose MParticleUser.incrementUserAttribute + +## [2.1.2] - 2018-10-18 + +### Added + +- Add react-native-mparticle.podspec + +## [2.1.1] - 2018-08-25 + +### Fixed + +- Fix IdentityType transformations + +## [2.1.0] - 2018-07-27 + +### Added + +- Add additional APIs for Attribution + +### Fixed + +- Fix Identity error cases + +## [2.0.0] - 2018-03-19 + +Initial rewrite as a React Native module. + +## [1.0.7] - 2018-02-27 + +### Changed + +- Minor updates + +## [1.0.6] - 2018-02-21 + +### Changed + +- Minor updates + +## [1.0.4] - 2017-11-28 + +### Changed + +- Minor updates + +## [1.0.3] - 2017-08-17 + +### Changed + +- Initial release with core mParticle SDK integration + +[Unreleased]: https://github.com/mParticle/react-native-mparticle/compare/2.8.1...HEAD +[2.8.1]: https://github.com/mParticle/react-native-mparticle/compare/2.8.0...2.8.1 +[2.8.0]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.13...2.8.0 +[2.7.13]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.12...v2.7.13 +[2.7.12]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.11...v2.7.12 +[2.7.11]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.10...v2.7.11 +[2.7.10]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.9...v2.7.10 +[2.7.9]: https://github.com/mParticle/react-native-mparticle/compare/2.7.8...v2.7.9 +[2.7.8]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.7...2.7.8 +[2.7.7]: https://github.com/mParticle/react-native-mparticle/compare/2.7.6...v2.7.7 +[2.7.6]: https://github.com/mParticle/react-native-mparticle/compare/2.7.5...2.7.6 +[2.7.5]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.4...2.7.5 +[2.7.4]: https://github.com/mParticle/react-native-mparticle/compare/2.7.3...v2.7.4 +[2.7.3]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.2...2.7.3 +[2.7.2]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.1...v2.7.2 +[2.7.1]: https://github.com/mParticle/react-native-mparticle/compare/v2.7.0...v2.7.1 +[2.7.0]: https://github.com/mParticle/react-native-mparticle/compare/v2.6.2...v2.7.0 +[2.6.2]: https://github.com/mParticle/react-native-mparticle/compare/v2.6.1...v2.6.2 +[2.6.1]: https://github.com/mParticle/react-native-mparticle/compare/v2.6.0...v2.6.1 +[2.6.0]: https://github.com/mParticle/react-native-mparticle/compare/v2.5.0...v2.6.0 +[2.5.0]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.13...v2.5.0 +[2.4.13]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.12...v2.4.13 +[2.4.12]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.11...v2.4.12 +[2.4.11]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.10...v2.4.11 +[2.4.10]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.9...v2.4.10 +[2.4.9]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.8...v2.4.9 +[2.4.8]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.7...v2.4.8 +[2.4.7]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.5...v2.4.7 +[2.4.6]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.5...v2.4.7 +[2.4.5]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.3...v2.4.5 +[2.4.4]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.3...v2.4.5 +[2.4.3]: https://github.com/mParticle/react-native-mparticle/compare/2.4.2...v2.4.3 +[2.4.2]: https://github.com/mParticle/react-native-mparticle/compare/2.4.1...2.4.2 +[2.4.1]: https://github.com/mParticle/react-native-mparticle/compare/v2.4.0...2.4.1 +[2.4.0]: https://github.com/mParticle/react-native-mparticle/compare/v2.3.3...v2.4.0 +[2.3.3]: https://github.com/mParticle/react-native-mparticle/compare/v2.3.2...v2.3.3 +[2.3.2]: https://github.com/mParticle/react-native-mparticle/compare/2.3.1...v2.3.2 +[2.3.1]: https://github.com/mParticle/react-native-mparticle/compare/2.3.0...2.3.1 +[2.3.0]: https://github.com/mParticle/react-native-mparticle/compare/2.2.3...2.3.0 +[2.2.3]: https://github.com/mParticle/react-native-mparticle/compare/2.2.2...2.2.3 +[2.2.2]: https://github.com/mParticle/react-native-mparticle/compare/2.2.1...2.2.2 +[2.2.1]: https://github.com/mParticle/react-native-mparticle/compare/2.2.0...2.2.1 +[2.2.0]: https://github.com/mParticle/react-native-mparticle/compare/2.1.3...2.2.0 +[2.1.3]: https://github.com/mParticle/react-native-mparticle/compare/2.1.2...2.1.3 +[2.1.2]: https://github.com/mParticle/react-native-mparticle/compare/2.1.1...2.1.2 +[2.1.1]: https://github.com/mParticle/react-native-mparticle/compare/2.1.0...2.1.1 +[2.1.0]: https://github.com/mParticle/react-native-mparticle/compare/2.0.0...2.1.0 +[2.0.0]: https://github.com/mParticle/react-native-mparticle/compare/1.0.7...2.0.0 +[1.0.7]: https://github.com/mParticle/react-native-mparticle/compare/1.0.6...1.0.7 +[1.0.6]: https://github.com/mParticle/react-native-mparticle/compare/1.0.4...1.0.6 +[1.0.4]: https://github.com/mParticle/react-native-mparticle/compare/1.0.3...1.0.4 +[1.0.3]: https://github.com/mParticle/react-native-mparticle/releases/tag/1.0.3 diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..dbe5900 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +2.8.1 diff --git a/release.sh b/release.sh deleted file mode 100755 index e45df97..0000000 --- a/release.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -npm publish --provenance \ No newline at end of file