Skip to content

update-build

update-build #15

name: Update Framework
on:
repository_dispatch:
types: [update-build]
jobs:
update_framework:
runs-on: macos-latest
steps:
- name: Checkout CEL iOS Repository
uses: actions/checkout@v4
with:
path: ios
- name: Checkout CEL Rust Repository
uses: actions/checkout@v4
with:
repository: superwall/cel-evaluator-rs
token: ${{ secrets.GITHUB_TOKEN }}
path: rust
- name: Extract Version Number from Cargo.toml
id: extract_version
run: |
version=$(grep '^version =' rust/Cargo.toml | sed -E 's/version = "(.*)"/\1/')
echo "VERSION_NUMBER=$version" >> $GITHUB_ENV
- name: Check if Version Has Changed
id: version_check
run: |
current_version=$(git tag --sort=-v:refname | grep '^v' | head -n 1 | sed 's/^v//')
echo "Current version: $current_version"
echo "New version: ${{ env.VERSION_NUMBER }}"
if [ "$current_version" = "${{ env.VERSION_NUMBER }}" ]; then
echo "Version has not changed, exiting."
exit 0
fi
- name: Cache Rust toolchain
uses: actions/cache@v3
with:
path: |
~/.cargo
~/.rustup
key: ${{ runner.os }}-rust-toolchain-${{ hashFiles('**/rust-toolchain') }}
- name: Cache Cargo registry
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache Cargo build
uses: actions/cache@v3
with:
path: rust/target
key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-build-
- name: Install Rust (if not cached)
run: |
if [ ! -x "$(command -v rustup)" ]; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
fi
source $HOME/.cargo/env
shell: bash
- name: Build iOS Framework
run: |
chmod +x ./build_ios.sh
./build_ios.sh
working-directory: rust
- name: Replace XCFramework
run: |
rm -rf ios/Frameworks/libcel.xcframework
mv rust/target/xcframeworks/libcel.xcframework ios/Frameworks/
- name: Replace Swift File
run: |
rm -rf ios/Sources/SuperCEL/cel.swift
mv rust/target/ios/cel.swift ios/Sources/SuperCEL/
- name: Update Podspec Version
run: |
sed -i '' "s/s.version = \".*\"/s.version = \"${{ env.VERSION_NUMBER }}\"/" ios/SuperCEL.podspec
- name: Commit and Push Changes
run: |
cd ios
git config --global user.name "GitHub Actions"
git config --global user.email "[email protected]"
git add .
git commit -m "Update framework"
git push origin main
- name: Tag the New Version
run: |
git tag -a "${{ env.VERSION_NUMBER }}" -m "Release version ${{ env.VERSION_NUMBER }}"
git push origin "${{ env.VERSION_NUMBER }}"
working-directory: ios
- name: Publish to CocoaPod register
env:
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
run: |
pod trunk push SuperCEL.podspec --allow-warnings
working-directory: ios
- name: Create GitHub Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.VERSION_NUMBER }}
release_name: ${{ env.VERSION_NUMBER }}
body: "This is an automatically generated release. Please see the [original Rust release](https://github.com/superwall/cel-evaluator-rs/releases/tag/${{ env.VERSION_NUMBER }}) for any version changes."
draft: false
prerelease: false