diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml
index 00d41a9..f49ace6 100644
--- a/.github/workflows/build-ios.yml
+++ b/.github/workflows/build-ios.yml
@@ -3,7 +3,7 @@ name: Build iOS XCFramework
on:
workflow_dispatch:
push:
- branches: [ feat/ooniprobe-ffi-kotlin ]
+ branches: ["feat/**"]
jobs:
build-ios:
@@ -32,65 +32,75 @@ jobs:
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: Publish to Maven Central
- working-directory: maven/ios
- run: |
- mvn clean deploy \
- -Dios.xcframework.name=$(ls *.zip | xargs basename) \
- --batch-mode \
- -DskipTests
- env:
- MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
- MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
- MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
+ 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)
+ RELEASE_VERSION="0.0.1+${VERSION}"
+ 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 }}
diff --git a/maven/ios/passport-template.podspec b/maven/ios/passport-template.podspec
new file mode 100644
index 0000000..796cc08
--- /dev/null
+++ b/maven/ios/passport-template.podspec
@@ -0,0 +1,13 @@
+Pod::Spec.new do |s|
+ s.name = "passport"
+ s.version = "@RELEASE_VERSION@"
+ s.summary = "OONI Probe Passport Library for iOS"
+ s.author = "Mehul Gulati"
+ s.homepage = "https://github.com/ooni/ooniprobe-rs"
+ s.license = { :type => "https://opensource.org/licenses/BSD-3-Clause" }
+ s.source = {
+ :http => "https://repo1.maven.org/maven2/org/ooni/passport-ios/@VERSION@/passport-ios-@VERSION@.zip"
+ }
+ s.platform = :ios, "9.0"
+ s.ios.vendored_frameworks = "passport.xcframework"
+end
diff --git a/maven/ios/pom.xml b/maven/ios/pom.xml
index ec898b8..65da513 100644
--- a/maven/ios/pom.xml
+++ b/maven/ios/pom.xml
@@ -47,6 +47,7 @@
ooniprobe-passport.xcframework.zip
${project.basedir}/${ios.xcframework.name}
+ ${project.basedir}/passport.podspec
@@ -82,6 +83,10 @@
${project.artifact.file}
zip
+
+ ${ios.podspec.file}
+ podspec
+