Files
xamarin-neo4j/.github/workflows/deploy-appstore.yml
Trevi Awater efadb528ee fix
2026-03-30 22:06:27 +02:00

95 lines
3.4 KiB
YAML

name: Deploy to App Store
on:
release:
types: [published]
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: macos-16
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Select Xcode
run: |
XCODE=$(ls -d /Applications/Xcode_26*.app 2>/dev/null | sort -V | tail -1)
if [ -z "$XCODE" ]; then
XCODE=$(ls -d /Applications/Xcode*.app 2>/dev/null | sort -V | tail -1)
fi
echo "Using $XCODE"
sudo xcode-select -s "$XCODE/Contents/Developer"
- 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