From c54332cc2750cea2da8eb6a29fa641dd2afaf364 Mon Sep 17 00:00:00 2001 From: Trevi Awater Date: Mon, 30 Mar 2026 21:54:52 +0200 Subject: [PATCH] testflight --- .github/workflows/deploy-appstore.yml | 85 +++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 .github/workflows/deploy-appstore.yml diff --git a/.github/workflows/deploy-appstore.yml b/.github/workflows/deploy-appstore.yml new file mode 100644 index 0000000..461a58b --- /dev/null +++ b/.github/workflows/deploy-appstore.yml @@ -0,0 +1,85 @@ +name: Deploy to App Store + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: macos-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - 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 + env: + CERTIFICATE_P12: ${{ secrets.CERTIFICATE_P12 }} + CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }} + run: | + CERT_PATH=$RUNNER_TEMP/certificate.p12 + KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db + KEYCHAIN_PASSWORD=$(openssl rand -base64 32) + + echo -n "$CERTIFICATE_P12" | base64 --decode -o $CERT_PATH + + security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + security set-keychain-settings -lut 21600 $KEYCHAIN_PATH + security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + security import $CERT_PATH -P "$CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH + security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + security list-keychain -d user -s $KEYCHAIN_PATH + + - 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: 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 App Store Connect + env: + APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }} + APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} + APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }} + run: | + KEY_PATH=$RUNNER_TEMP/AuthKey.p8 + echo -n "$APP_STORE_CONNECT_KEY" > $KEY_PATH + + IPA_PATH=$(find . -name "*.ipa" -type f | head -1) + echo "Uploading $IPA_PATH" + + xcrun altool --upload-app \ + -f "$IPA_PATH" \ + -t ios \ + --apiKey "$APP_STORE_CONNECT_KEY_ID" \ + --apiIssuer "$APP_STORE_CONNECT_ISSUER_ID" \ + --api-key-path "$KEY_PATH" + + - name: Cleanup + if: always() + run: | + security delete-keychain $RUNNER_TEMP/app-signing.keychain-db 2>/dev/null || true + rm -f $RUNNER_TEMP/certificate.p12 $RUNNER_TEMP/profile.mobileprovision $RUNNER_TEMP/AuthKey.p8