diff --git a/.github/workflows/complete-release.yml b/.github/workflows/complete-release.yml new file mode 100644 index 0000000..41fd250 --- /dev/null +++ b/.github/workflows/complete-release.yml @@ -0,0 +1,39 @@ +name: Complete Release + +on: + pull_request: + types: + - closed + branches: + - master + +jobs: + tag-and-release: + # Run only after release PR branch is merged + if: github.event.pull_request.merged == true && startsWith(github.head_ref, 'releases/') + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Get Tag Name + id: get_tag_name + run: echo "tag_name=v$(cat package.json | jq -r '.version')" >> $GITHUB_OUTPUT + + - name: Create Tag + id: create_tag + uses: rickstaa/action-create-tag@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ steps.get_tag_name.outputs.tag_name }} + + - name: Create Release + uses: softprops/action-gh-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.get_tag_name.outputs.tag_name }} + name: ${{ steps.get_tag_name.outputs.tag_name }} + draft: false + prerelease: false + body_path: .scripts/changes.md diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..d50ed43 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,31 @@ +name: Publish to npm + +on: workflow_dispatch + +# push: +# tags: +# - 'v[0-9]+.[0-9]+.[0-9]+*' + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set Node.js 20.x + uses: actions/setup-node@v3 + with: + node-version: 20.x + + - name: Run install + uses: borales/actions-yarn@v4 + with: + cmd: install # will run `yarn install` command + + - name: Publish + uses: borales/actions-yarn@v4 + with: + cmd: publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # if needed + \ No newline at end of file diff --git a/.github/workflows/update-versions.yml b/.github/workflows/update-versions.yml new file mode 100644 index 0000000..14d805e --- /dev/null +++ b/.github/workflows/update-versions.yml @@ -0,0 +1,50 @@ +name: Update Versions + +on: + workflow_dispatch: + inputs: + distribution-version: + description: 'Distribution Version of the release' + required: true + type: string + ios-version: + description: 'Version of the iOS SDK to incorporate' + required: true + type: string + android-version: + description: 'Version of the Android SDK to incorporate' + required: true + type: string + +jobs: + update-versions: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: develop + + - name: Update distribution version plus any incidental copies + run: .scripts/update_distribution_version.sh "${{ inputs.distribution-version }}" + + - name: Update ApptentiveKit iOS dependency + run: .scripts/update_ios_version.sh apptentive-react-native.podspec "${{ inputs.ios-version }}" + + - name: Update ApptentiveKit Android dependency + run: .scripts/update_android_version.sh android/build.gradle "${{ inputs.android-version }}" + + - name: Update CHANGELOG.md + id: changelog + run: | + .scripts/add_changelog_entry.sh "${{ inputs.distribution-version }}" "${{ inputs.android-version }}" "${{ inputs.ios-version }}" \ + > .scripts/changes.md + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v5 + with: + commit-message: "Update for ${{ inputs.distribution-version }}" + committer: "Alchemer Mobile Team " + branch: "updates/${{ inputs.distribution-version }}" + base: develop + title: "Update for v${{ inputs.distribution-version }}" + body-path: .scripts/changes.md \ No newline at end of file diff --git a/.scripts/add_changelog_entry.sh b/.scripts/add_changelog_entry.sh new file mode 100755 index 0000000..af49053 --- /dev/null +++ b/.scripts/add_changelog_entry.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# Fail on first error. +set -e + +# Check for correct number of arguments. +if [ "$#" -ne 3 ]; then + echo "Usage: $0 " + exit 1 # Exit the script with an error status +fi + +# Create and change to a temporary directory. +mkdir CHANGELOG-update +cd CHANGELOG-update + +# Split the CHANGELOG.md file into multiple parts with a pattern matching +# the start of a new version entry. +# The filenames with be 'xaa', 'xab', 'xac', etc. +cat ../CHANGELOG.md | csplit -s - '/^# 20/' {1} + +# Create the new version entry's heading and add it to a file whose name +# is alphabetically after the CHANGELOG's preamble. +echo "# $(date -Idate) - v$1" > xx00a +echo "" >> xx00a + +# Add the new version entry's body a file whose name is alphabetically +# after the heading. +echo "- Apptentive Android SDK: $2" > xx00b +echo "- Apptentive iOS SDK: $3" >> xx00b +echo "" >> xx00b + +# Copy the new entry to print out later. +NEW_ENTRY=$(cat xx00b) + +# Reassebmble the parts of the changelog into a local copy. +cat $(ls -1 | sort) > foo.md + +# Move the local copy of the changelog to the original location. +mv foo.md ../CHANGELOG.md + +# Clean up the temporary directory. +rm x* +cd .. +rmdir CHANGELOG-update + +echo "$NEW_ENTRY" diff --git a/.scripts/changes.md b/.scripts/changes.md new file mode 100644 index 0000000..a6aefb0 --- /dev/null +++ b/.scripts/changes.md @@ -0,0 +1,2 @@ +- Apptentive Android SDK: 6.1.0 +- Apptentive iOS SDK: 6.2.2 diff --git a/.scripts/update_android_version.sh b/.scripts/update_android_version.sh new file mode 100755 index 0000000..eb49bee --- /dev/null +++ b/.scripts/update_android_version.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Fail on first error. +set -e + +# Check for correct number of arguments. +if [ $# -ne 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +dependency_name="com.apptentive:apptentive-kit-android" +new_version="$2" +build_gradle_file="$1" + +# Check if the build.gradle file exists +if [ ! -f "$build_gradle_file" ]; then + echo "Error: $build_gradle_file does not exist." + exit 1 +fi + +# Use sed to update the version in the podspec file +sed -i "s/implementation '$dependency_name:[^']*'/implementation '$dependency_name:$new_version'/" "$build_gradle_file" + +echo "Updated $dependency_name to version $new_version in $build_gradle_file." diff --git a/.scripts/update_distribution_version.sh b/.scripts/update_distribution_version.sh new file mode 100755 index 0000000..b794864 --- /dev/null +++ b/.scripts/update_distribution_version.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +# This script should update any incidental copies of the +# "single source of truth" version, e.g. in package.json. +# It will be different for each project. + +# Fail on first error. +set -e + +# Check for correct number of arguments. +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +new_version="$1" +package_json="package.json" + +# Check if the podspec file exists +if [ ! -f "$package_json" ]; then + echo "Error: $package_json does not exist." + exit 1 +fi + +version_script=".version=\"$new_version\"" +yq -iP $version_script "$package_json" -o json + +echo "Updated version to $new_version in $package_json." + +podspec_file="apptentive-react-native.podspec" + +# Check if the podspec file exists +if [ ! -f "$podspec_file" ]; then + echo "Error: $podspec_file does not exist." + exit 1 +fi + +# Use sed to update the version in the podspec file +sed -i "s/s.version\( *\)= *\"[^\"]*\"/s.version\1= \"$new_version\"/" "$podspec_file" + +echo "Updated version to $new_version in $podspec_file." + +# React native code reads version from package.json at runtime \ No newline at end of file diff --git a/.scripts/update_ios_version.sh b/.scripts/update_ios_version.sh new file mode 100755 index 0000000..335d34e --- /dev/null +++ b/.scripts/update_ios_version.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Fail on first error. +set -e + +# Check for correct number of arguments. +if [ $# -ne 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +dependency_name="ApptentiveKit" +new_version="$2" +podspec_file="$1" + +# Check if the podspec file exists +if [ ! -f "$podspec_file" ]; then + echo "Error: $podspec_file does not exist." + exit 1 +fi + +# Use sed to update the version in the podspec file +sed -i "s/s.dependency '$dependency_name', '[^']*'/s.dependency '$dependency_name', '~> $new_version'/" "$podspec_file" + +echo "Updated $dependency_name to version $new_version in $podspec_file." diff --git a/android/build.gradle b/android/build.gradle index b9a03c4..d45baca 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -73,7 +73,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" // Apptentive - implementation 'com.apptentive:apptentive-kit-android:6.1.0' + implementation 'com.apptentive:apptentive-kit-android:6.7.0' } if (isNewArchitectureEnabled()) { diff --git a/apptentive-react-native.podspec b/apptentive-react-native.podspec index 2f36806..fb23ac1 100644 --- a/apptentive-react-native.podspec +++ b/apptentive-react-native.podspec @@ -10,11 +10,11 @@ Pod::Spec.new do |s| s.license = package["license"] s.authors = package["author"] - s.platforms = { :ios => "11.0" } + s.platforms = { :ios => "13.0" } s.source = { :git => "https://github.com/apptentive/apptentive-react-native.git", :tag => "v#{s.version}" } s.source_files = "ios/**/*.{h,m,mm,swift}" - s.dependency 'ApptentiveKit', '~> 6.2.0' + s.dependency 'ApptentiveKit', '~> 6.7.0' s.dependency "React-Core" end