feat(ci/release): add tvOS TestFlight build + use renamed iOS profile
ci / web (push) Successful in 29s
apple / swift (push) Successful in 1m12s
ci / docs-site (push) Successful in 33s
ci / rust (push) Successful in 2m2s
ci / bench (push) Successful in 1m34s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 5s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 5s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 3s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 4s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 3s
deb / build-publish (push) Successful in 2m4s
docker / deploy-docs (push) Successful in 18s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Successful in 4m59s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Successful in 5m4s
ci / web (push) Successful in 29s
apple / swift (push) Successful in 1m12s
ci / docs-site (push) Successful in 33s
ci / rust (push) Successful in 2m2s
ci / bench (push) Successful in 1m34s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 5s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 5s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 3s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 4s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 3s
deb / build-publish (push) Successful in 2m4s
docker / deploy-docs (push) Successful in 18s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Successful in 4m59s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Successful in 5m4s
tvOS is scaffolded (Punktfunk-tvOS target/scheme + build-xcframework BUILD_TVOS). Wire it: install nightly + rust-src (tier-3 -Zbuild-std), build the xcframework with BUILD_TVOS=1, and add a tvOS archive+export+upload step mirroring iOS (manual signing with the 'Punktfunk tvOS App Store Distribution' profile, since the App-Manager ASC key can't cloud-sign). Also point iOS at the renamed 'Punktfunk iOS App Store Distribution' profile. macOS App Store/TestFlight still pending (needs App Sandbox entitlements). Needs tvOS on the App Store Connect app record + the tvOS platform installed on the runner. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -77,15 +77,19 @@ jobs:
|
|||||||
echo "BUILD_NUM=$GITHUB_RUN_NUMBER" >> "$GITHUB_ENV"
|
echo "BUILD_NUM=$GITHUB_RUN_NUMBER" >> "$GITHUB_ENV"
|
||||||
echo "version $V build $GITHUB_RUN_NUMBER"
|
echo "version $V build $GITHUB_RUN_NUMBER"
|
||||||
|
|
||||||
- name: Rust toolchain (mac + iOS slices)
|
- name: Rust toolchain (mac + iOS + tvOS slices)
|
||||||
run: |
|
run: |
|
||||||
RUSTUP="$(command -v rustup || echo "$HOME/.cargo/bin/rustup")"
|
RUSTUP="$(command -v rustup || echo "$HOME/.cargo/bin/rustup")"
|
||||||
dirname "$RUSTUP" >> "$GITHUB_PATH"
|
dirname "$RUSTUP" >> "$GITHUB_PATH"
|
||||||
"$RUSTUP" target add aarch64-apple-darwin x86_64-apple-darwin \
|
"$RUSTUP" target add aarch64-apple-darwin x86_64-apple-darwin \
|
||||||
aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios
|
aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios
|
||||||
|
# tvOS targets are tier-3 (no prebuilt std) — build-xcframework.sh compiles them with
|
||||||
|
# nightly + -Zbuild-std, so ensure nightly + rust-src are present.
|
||||||
|
"$RUSTUP" toolchain install nightly --profile minimal
|
||||||
|
"$RUSTUP" component add rust-src --toolchain nightly
|
||||||
|
|
||||||
- name: Build PunktfunkCore.xcframework (mac + iOS)
|
- name: Build PunktfunkCore.xcframework (mac + iOS + tvOS)
|
||||||
run: BUILD_IOS=1 bash scripts/build-xcframework.sh
|
run: BUILD_IOS=1 BUILD_TVOS=1 bash scripts/build-xcframework.sh
|
||||||
|
|
||||||
- name: Stage App Store Connect API key
|
- name: Stage App Store Connect API key
|
||||||
env:
|
env:
|
||||||
@@ -162,7 +166,7 @@ jobs:
|
|||||||
# Store profile survives this build; headless xcodebuild doesn't need the GUI app.
|
# Store profile survives this build; headless xcodebuild doesn't need the GUI app.
|
||||||
osascript -e 'tell application "Xcode" to quit' >/dev/null 2>&1 || true
|
osascript -e 'tell application "Xcode" to quit' >/dev/null 2>&1 || true
|
||||||
pkill -x Xcode 2>/dev/null || true
|
pkill -x Xcode 2>/dev/null || true
|
||||||
PROFILE="Punktfunk App Store Distribution"
|
PROFILE="Punktfunk iOS App Store Distribution"
|
||||||
DEVELOPER_DIR="$XCODE_DEV_DIR" xcodebuild archive \
|
DEVELOPER_DIR="$XCODE_DEV_DIR" xcodebuild archive \
|
||||||
-project "$PROJECT" -scheme Punktfunk-iOS \
|
-project "$PROJECT" -scheme Punktfunk-iOS \
|
||||||
-destination 'generic/platform=iOS' \
|
-destination 'generic/platform=iOS' \
|
||||||
@@ -194,3 +198,45 @@ jobs:
|
|||||||
-authenticationKeyPath "$RUNNER_TEMP/asc.p8" \
|
-authenticationKeyPath "$RUNNER_TEMP/asc.p8" \
|
||||||
-authenticationKeyID "${{ secrets.ASC_API_KEY_ID }}" \
|
-authenticationKeyID "${{ secrets.ASC_API_KEY_ID }}" \
|
||||||
-authenticationKeyIssuerID "${{ secrets.ASC_API_ISSUER_ID }}"
|
-authenticationKeyIssuerID "${{ secrets.ASC_API_ISSUER_ID }}"
|
||||||
|
|
||||||
|
- name: tvOS — archive + upload to TestFlight
|
||||||
|
if: gitea.event_name != 'workflow_dispatch' || inputs.testflight == 'true'
|
||||||
|
# Needs tvOS added to the App Store Connect app record + the tvOS platform installed
|
||||||
|
# on the runner (xcodebuild -downloadPlatform tvOS).
|
||||||
|
continue-on-error: true
|
||||||
|
run: |
|
||||||
|
# Same manual App Store signing as iOS (the App-Manager ASC key can't cloud-sign).
|
||||||
|
osascript -e 'tell application "Xcode" to quit' >/dev/null 2>&1 || true
|
||||||
|
pkill -x Xcode 2>/dev/null || true
|
||||||
|
PROFILE="Punktfunk tvOS App Store Distribution"
|
||||||
|
DEVELOPER_DIR="$XCODE_DEV_DIR" xcodebuild archive \
|
||||||
|
-project "$PROJECT" -scheme Punktfunk-tvOS \
|
||||||
|
-destination 'generic/platform=tvOS' \
|
||||||
|
-archivePath "$RUNNER_TEMP/Punktfunk-tvos.xcarchive" \
|
||||||
|
MARKETING_VERSION="$VERSION" CURRENT_PROJECT_VERSION="$BUILD_NUM" \
|
||||||
|
CODE_SIGN_STYLE=Manual \
|
||||||
|
CODE_SIGN_IDENTITY="Apple Distribution" \
|
||||||
|
DEVELOPMENT_TEAM="$TEAM_ID" \
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER="$PROFILE"
|
||||||
|
cat > "$RUNNER_TEMP/export-tvos.plist" <<EOF
|
||||||
|
<?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>destination</key><string>upload</string>
|
||||||
|
<key>teamID</key><string>$TEAM_ID</string>
|
||||||
|
<key>signingStyle</key><string>manual</string>
|
||||||
|
<key>signingCertificate</key><string>Apple Distribution</string>
|
||||||
|
<key>provisioningProfiles</key>
|
||||||
|
<dict><key>io.unom.punktfunk</key><string>$PROFILE</string></dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
EOF
|
||||||
|
DEVELOPER_DIR="$XCODE_DEV_DIR" xcodebuild -exportArchive \
|
||||||
|
-archivePath "$RUNNER_TEMP/Punktfunk-tvos.xcarchive" \
|
||||||
|
-exportOptionsPlist "$RUNNER_TEMP/export-tvos.plist" \
|
||||||
|
-exportPath "$RUNNER_TEMP/export-tvos" \
|
||||||
|
-authenticationKeyPath "$RUNNER_TEMP/asc.p8" \
|
||||||
|
-authenticationKeyID "${{ secrets.ASC_API_KEY_ID }}" \
|
||||||
|
-authenticationKeyIssuerID "${{ secrets.ASC_API_ISSUER_ID }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user