mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2026-09-12 21:01:50 +02:00
Delete iOS release workflow for separate PR
This commit is contained in:
@@ -1,142 +0,0 @@
|
||||
name: Build and Publish iOS Release
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build, attach, and upload signed IPA
|
||||
runs-on: macos-latest
|
||||
environment: testflight
|
||||
env:
|
||||
BUILD_CERTIFICATE_BASE64: ${{ secrets.IOS_DISTRIBUTION_CERTIFICATE_BASE64 }}
|
||||
P12_PASSWORD: ${{ secrets.IOS_DISTRIBUTION_CERTIFICATE_PASSWORD }}
|
||||
PROVISIONING_PROFILE_BASE64: ${{ secrets.IOS_APPSTORE_PROVISIONING_PROFILE_BASE64 }}
|
||||
APPSTORE_CONNECT_API_KEY_BASE64: ${{ secrets.APPSTORE_CONNECT_API_KEY_BASE64 }}
|
||||
APPSTORE_CONNECT_API_KEY_ID: ${{ secrets.APPSTORE_CONNECT_API_KEY_ID }}
|
||||
APPSTORE_CONNECT_ISSUER_ID: ${{ secrets.APPSTORE_CONNECT_ISSUER_ID }}
|
||||
steps:
|
||||
- name: Check out release tag
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.release.tag_name }}
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 24
|
||||
cache: npm
|
||||
|
||||
- name: Install JavaScript dependencies
|
||||
run: npm ci --omit=optional
|
||||
|
||||
- name: Build shared web app
|
||||
run: npm run generate
|
||||
|
||||
- name: Sync Capacitor iOS project
|
||||
run: npx cap sync ios
|
||||
|
||||
- name: Install CocoaPods dependencies
|
||||
working-directory: ios/App
|
||||
run: pod install --deployment
|
||||
|
||||
- name: Set unique App Store build number
|
||||
run: echo "BUILD_NUMBER=$((1000 + GITHUB_RUN_NUMBER))" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Install signing certificate and provisioning profile
|
||||
env:
|
||||
KEYCHAIN_PASSWORD: ${{ github.run_id }}-${{ github.run_attempt }}
|
||||
run: |
|
||||
certificate_path="$RUNNER_TEMP/distribution.p12"
|
||||
profile_path="$RUNNER_TEMP/app-store.mobileprovision"
|
||||
keychain_path="$RUNNER_TEMP/app-signing.keychain-db"
|
||||
|
||||
printf '%s' "$BUILD_CERTIFICATE_BASE64" | base64 -D > "$certificate_path"
|
||||
printf '%s' "$PROVISIONING_PROFILE_BASE64" | base64 -D > "$profile_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 "$certificate_path" -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k "$keychain_path"
|
||||
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" "$keychain_path"
|
||||
security list-keychain -d user -s "$keychain_path"
|
||||
|
||||
profile_uuid="$(security cms -D -i "$profile_path" | plutil -extract UUID raw -)"
|
||||
mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles"
|
||||
cp "$profile_path" "$HOME/Library/MobileDevice/Provisioning Profiles/$profile_uuid.mobileprovision"
|
||||
echo "PROFILE_UUID=$profile_uuid" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Archive signed iOS app
|
||||
working-directory: ios/App
|
||||
run: |
|
||||
xcodebuild -quiet \
|
||||
-workspace App.xcworkspace \
|
||||
-scheme App \
|
||||
-configuration Release \
|
||||
-sdk iphoneos \
|
||||
-destination 'generic/platform=iOS' \
|
||||
-archivePath "$RUNNER_TEMP/Audiobookshelf.xcarchive" \
|
||||
CODE_SIGN_STYLE=Manual \
|
||||
CODE_SIGN_IDENTITY="Apple Distribution" \
|
||||
PROVISIONING_PROFILE_SPECIFIER="$PROFILE_UUID" \
|
||||
CURRENT_PROJECT_VERSION="$BUILD_NUMBER" \
|
||||
archive
|
||||
|
||||
echo "Signed iOS archive succeeded."
|
||||
|
||||
- name: Export App Store IPA
|
||||
run: |
|
||||
cat > "$RUNNER_TEMP/ExportOptions.plist" <<PLIST
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>method</key>
|
||||
<string>app-store-connect</string>
|
||||
<key>signingStyle</key>
|
||||
<string>manual</string>
|
||||
<key>teamID</key>
|
||||
<string>7UFJ7D8V6A</string>
|
||||
<key>provisioningProfiles</key>
|
||||
<dict>
|
||||
<key>com.audiobookshelf.app</key>
|
||||
<string>$PROFILE_UUID</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
PLIST
|
||||
|
||||
xcodebuild -quiet -exportArchive \
|
||||
-archivePath "$RUNNER_TEMP/Audiobookshelf.xcarchive" \
|
||||
-exportOptionsPlist "$RUNNER_TEMP/ExportOptions.plist" \
|
||||
-exportPath "$RUNNER_TEMP/export"
|
||||
|
||||
echo "App Store IPA export succeeded."
|
||||
|
||||
- name: Store IPA artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: audiobookshelf-ios-release
|
||||
path: ${{ runner.temp }}/export/Audiobookshelf.ipa
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Attach IPA to GitHub release
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
||||
run: gh release upload "$RELEASE_TAG" "$RUNNER_TEMP/export/Audiobookshelf.ipa" --clobber
|
||||
|
||||
- name: Upload IPA to TestFlight
|
||||
run: |
|
||||
mkdir -p "$HOME/.appstoreconnect/private_keys"
|
||||
printf '%s' "$APPSTORE_CONNECT_API_KEY_BASE64" | base64 -D > \
|
||||
"$HOME/.appstoreconnect/private_keys/AuthKey_$APPSTORE_CONNECT_API_KEY_ID.p8"
|
||||
xcrun iTMSTransporter \
|
||||
-m upload \
|
||||
-assetFile "$RUNNER_TEMP/export/Audiobookshelf.ipa" \
|
||||
-apiKey "$APPSTORE_CONNECT_API_KEY_ID" \
|
||||
-apiIssuer "$APPSTORE_CONNECT_ISSUER_ID"
|
||||
Reference in New Issue
Block a user