name: Deploy to App Store on: push: branches: ["main"] paths: - "Xamarin.Neo4j/**" release: types: [published] workflow_dispatch: jobs: build-and-deploy: runs-on: macos-26 timeout-minutes: 45 steps: - name: Checkout uses: actions/checkout@v4 - name: Select Xcode uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: "26.5" - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: "10.0.x" - name: Install MAUI Workload run: dotnet workload install maui-ios - name: Import Signing Certificate uses: apple-actions/import-codesign-certs@v3 with: p12-file-base64: ${{ secrets.CERTIFICATE_P12 }} p12-password: ${{ secrets.CERTIFICATE_PASSWORD }} - name: Import Provisioning Profile env: PROVISIONING_PROFILE: ${{ secrets.PROVISIONING_PROFILE }} run: | PROFILE_PATH=$RUNNER_TEMP/profile.mobileprovision echo -n "$PROVISIONING_PROFILE" | base64 --decode -o $PROFILE_PATH mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles cp $PROFILE_PATH ~/Library/MobileDevice/Provisioning\ Profiles/ - name: Set Build Number run: | PLIST="Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.iOS/Info.plist" /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${{ github.run_number }}" "$PLIST" echo "Build number: ${{ github.run_number }}" - name: Build IPA working-directory: Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.iOS run: | dotnet publish -f net10.0-ios \ -c Release \ -p:ArchiveOnBuild=true \ -p:RuntimeIdentifier=ios-arm64 \ -p:CodesignKey="${{ secrets.CODESIGN_KEY_NAME }}" \ -p:CodesignProvision="${{ secrets.PROVISIONING_PROFILE_NAME }}" - name: Upload to TestFlight uses: apple-actions/upload-testflight-build@v3 with: app-path: Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.iOS/bin/Release/net10.0-ios/ios-arm64/publish/Xamarin.Neo4j.iOS.ipa issuer-id: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} api-key-id: ${{ secrets.APP_STORE_CONNECT_KEY_ID }} api-private-key: ${{ secrets.APP_STORE_CONNECT_KEY }}