update-build #21
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/Superscript/cel.swift | |
mv rust/target/ios/cel.swift ios/Sources/Superscript/ | |
- name: Update Podspec Version | |
run: | | |
sed -i '' "s/s.version = \".*\"/s.version = \"${{ env.VERSION_NUMBER }}\"/" ios/Superscript.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 Superscript.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 |