Skip to content

Merge pull request #11 from ooni/feat/ooniprobe-ffi-kotlin #71

Merge pull request #11 from ooni/feat/ooniprobe-ffi-kotlin

Merge pull request #11 from ooni/feat/ooniprobe-ffi-kotlin #71

Workflow file for this run

name: Build iOS XCFramework
on:
workflow_dispatch:
push:
branches:
- main
tags:
- "v*"
jobs:
build-ios:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Build XCFramework
run: make ios
- name: Upload XCFramework Artifact
uses: actions/upload-artifact@v4
with:
name: passport.xcframework
path: ios/ooniProbe.xcframework
- name: Upload Swift Bindings
uses: actions/upload-artifact@v6
with:
name: ooniprobe-swift
path: ios/Sources/OoniProbe/*.swift
publish-ios:
runs-on: ubuntu-latest
needs: build-ios
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "temurin"
cache: "maven"
server-id: central
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
- name: Download XCFramework
uses: actions/download-artifact@v4
with:
name: passport.xcframework
path: maven/ios/passport.xcframework
- name: Zip XCFramework
working-directory: maven/ios
run: zip -r passport.xcframework.zip passport.xcframework
- name: Set Project Version
working-directory: maven/ios
run: |
if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
VERSION="${GITHUB_REF_NAME#v}"
else
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-8)
VERSION="${SHORT_SHA}"
fi
echo "Generated version: $VERSION"
mvn versions:set \
-DnewVersion=${VERSION} \
-DremoveSnapshot=true
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Generate Podspec
working-directory: maven/ios
run: |
VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
RELEASE_VERSION="${VERSION}"
else
RELEASE_VERSION="0.1.0+${VERSION}"
fi
sed -e "s/@VERSION@/${VERSION}/g" -e "s/@RELEASE_VERSION@/${RELEASE_VERSION}/g" passport-template.podspec > passport.podspec
echo "Generated podspec with version: $VERSION, release version: $RELEASE_VERSION"
cat passport.podspec
- name: Publish to Maven Central
working-directory: maven/ios
run: |
mvn clean deploy \
-Dios.xcframework.name=$(ls *.zip | xargs basename) \
-Dios.podspec.file=${PWD}/passport.podspec \
--batch-mode \
-DskipTests
env:
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}