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 +