update workflow
Some checks are pending
Build & Deploy iOS to TestFlight / build-and-deploy (push) Waiting to run

This commit is contained in:
efrilm 2026-05-29 17:56:51 +07:00
parent 7955ebb7d1
commit e5c92b26c5

View File

@ -31,17 +31,14 @@ jobs:
P12_PASSWORD: ${{ secrets.P12_PASSWORD }} P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: | run: |
# Decode certificate to file
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
# Create temporary keychain
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# Import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A \ security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A \
-t cert -f pkcs12 -k $KEYCHAIN_PATH -t cert -f pkcs12 -k $KEYCHAIN_PATH
security set-key-partition-list -S apple-tool:,apple: \ security set-key-partition-list -S apple-tool:,apple: \
@ -56,7 +53,11 @@ jobs:
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
# Xcode requires the filename to be the profile's UUID
UUID=$(security cms -D -i $PP_PATH | plutil -extract UUID raw -)
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles/$UUID.mobileprovision
echo "Installed provisioning profile UUID: $UUID"
# ── CocoaPods ─────────────────────────────────────────────────────────── # ── CocoaPods ───────────────────────────────────────────────────────────
@ -68,13 +69,36 @@ jobs:
# ── Build ─────────────────────────────────────────────────────────────── # ── Build ───────────────────────────────────────────────────────────────
- name: Build iOS IPA - name: Build iOS Archive
env: env:
BUNDLE_ID: ${{ secrets.BUNDLE_ID }}
TEAM_ID: ${{ secrets.TEAM_ID }} TEAM_ID: ${{ secrets.TEAM_ID }}
run: | run: |
flutter build ipa --release \ # Build Flutter (no codesign — signing happens in xcodebuild archive)
--export-options-plist=ios/ExportOptions.plist flutter build ios --release --no-codesign
# Archive with manual signing
xcodebuild archive \
-workspace ios/Runner.xcworkspace \
-scheme Runner \
-configuration Release \
-archivePath $RUNNER_TEMP/Runner.xcarchive \
CODE_SIGN_STYLE="Manual" \
DEVELOPMENT_TEAM="$TEAM_ID" \
PROVISIONING_PROFILE_SPECIFIER="Enaklo Owner App Store" \
CODE_SIGN_IDENTITY="iPhone Distribution" \
-allowProvisioningUpdates
- name: Export IPA
run: |
xcodebuild -exportArchive \
-archivePath $RUNNER_TEMP/Runner.xcarchive \
-exportPath $RUNNER_TEMP/export \
-exportOptionsPlist ios/ExportOptions.plist \
-allowProvisioningUpdates
# Copy IPA to build output folder
mkdir -p build/ios/ipa
cp $RUNNER_TEMP/export/*.ipa build/ios/ipa/
# ── Upload to TestFlight ──────────────────────────────────────────────── # ── Upload to TestFlight ────────────────────────────────────────────────
@ -96,9 +120,9 @@ jobs:
if: ${{ always() }} if: ${{ always() }}
run: | run: |
security delete-keychain $RUNNER_TEMP/app-signing.keychain-db || true security delete-keychain $RUNNER_TEMP/app-signing.keychain-db || true
rm -f ~/Library/MobileDevice/Provisioning\ Profiles/build_pp.mobileprovision || true rm -rf ~/Library/MobileDevice/Provisioning\ Profiles/*.mobileprovision || true
# ── Artifact (opsional, untuk debugging) ──────────────────────────────── # ── Artifact ────────────────────────────────────────────────────────────
- name: Upload IPA as Artifact - name: Upload IPA as Artifact
if: always() if: always()