Update ios.yml #39
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Meowbili iDevice Workflow | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
jobs: | |
build: | |
name: Build and Archive App | |
runs-on: macos-13 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set Xcode Version | |
run: sudo xcode-select -s /Applications/Xcode_15.0.app | |
- name: Get App Store Connect API Key File | |
env: | |
ASCAPI_KEY: ${{ secrets.ASCAPI_KEY }} | |
run: | | |
KEY_PATH=$RUNNER_TEMP/ascapi-key.p8 | |
echo -n "$ASCAPI_KEY" > $KEY_PATH | |
- name: Install the Apple certificate | |
env: | |
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} | |
P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | |
KEYCHAIN_PASSWORD: 12345678 | |
run: | | |
# create variables | |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
# import certificate from secrets | |
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH | |
# create temporary keychain | |
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
# import certificate to keychain | |
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k ~/Library/Keychains/login.keychain | |
security list-keychain -d user -s $KEYCHAIN_PATH | |
- name: Resolve Swift dependencies | |
run: | | |
xcodebuild -resolvePackageDependencies -scheme DarockBili -configuration Debug | |
xcodebuild -resolvePackageDependencies -scheme DarockBili -configuration Release | |
- name: Archive DarockBili App | |
env: | |
ASCAPI_KEY_ID: ${{ secrets.ASCAPI_KEY_ID }} | |
ASCAPI_ISSUER_ID: ${{ secrets.ASCAPI_ISSUER_ID }} | |
run: | | |
KEY_PATH=$RUNNER_TEMP/ascapi-key.p8 | |
xcodebuild -scheme DarockBili -configuration Debug DEVELOPMENT_TEAM=B57D8PP775 -sdk 'iphoneos' -destination 'generic/platform=iOS' -archivePath DarockBili_Debug.xcarchive clean archive CODE_SIGN_IDENTITY="Apple Development" -allowProvisioningUpdates -authenticationKeyPath $KEY_PATH -authenticationKeyID $ASCAPI_KEY_ID -authenticationKeyIssuerID $ASCAPI_ISSUER_ID | |
xcodebuild -scheme DarockBili -configuration Release DEVELOPMENT_TEAM=B57D8PP775 -sdk 'iphoneos' -destination 'generic/platform=iOS' -archivePath DarockBili_Release.xcarchive clean archive CODE_SIGN_IDENTITY="Apple Development" -allowProvisioningUpdates -authenticationKeyPath $KEY_PATH -authenticationKeyID $ASCAPI_KEY_ID -authenticationKeyIssuerID $ASCAPI_ISSUER_ID | |
xcodebuild -scheme DarockBili -configuration Release DEVELOPMENT_TEAM=B57D8PP775 -sdk 'iphoneos' -destination 'generic/platform=iOS' -archivePath DarockBili_Release_d.xcarchive clean archive CODE_SIGN_IDENTITY="Apple Distribution" -allowProvisioningUpdates -authenticationKeyPath $KEY_PATH -authenticationKeyID $ASCAPI_KEY_ID -authenticationKeyIssuerID $ASCAPI_ISSUER_ID | |
- name: Export IPA | |
run: | | |
mkdir ./Export_Debug | |
mkdir ./Export_Release | |
mkdir ./Export_Release_d | |
xcodebuild -exportArchive -archivePath DarockBili_Debug.xcarchive -exportPath ./Export_Debug -exportOptionsPlist ExportOptions.plist | |
xcodebuild -exportArchive -archivePath DarockBili_Release.xcarchive -exportPath ./Export_Release -exportOptionsPlist ExportOptions.plist | |
xcodebuild -exportArchive -archivePath DarockBili_Release_d.xcarchive -exportPath ./Export_Release_d -exportOptionsPlist ExportOptions.plist | |
- name: Upload Debug IPA | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Debug.ipa | |
path: ./Export_Debug/DarockBili.ipa | |
- name: Upload Release IPA | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Release.ipa | |
path: ./Export_Release/DarockBili.ipa | |
- name: Upload Release Distribution IPA | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Release_Distribution.ipa | |
path: ./Export_Release_d/DarockBili.ipa | |
build_for_testing: | |
runs-on: macos-13 | |
name: Test App | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set Xcode Version | |
run: sudo xcode-select -s /Applications/Xcode_15.0.app | |
- name: Resolve Swift dependencies | |
run: xcodebuild -resolvePackageDependencies -scheme 'DarockBili Watch App' -configuration Release | |
- name: Prepare Cache Folder | |
run: mkdir Caches | |
- name: Build and Test | |
run: xcodebuild test -project ./DarockBili.xcodeproj -scheme 'DarockBili Watch App' -configuration Release -destination 'platform=watchOS Simulator,name=Apple Watch Series 7 (41mm),OS=10.0' -destination 'platform=watchOS Simulator,name=Apple Watch Series 9 (45mm),OS=10.0' -testPlan WatchAppUITestPlan -testProductsPath ./Caches/TestProducts.xctestproducts -derivedDataPath ./Caches/DerivedData | tee TestBuilding.log | |
- name: Upload Building Log | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Watch Testing Log | |
path: ./TestBuilding.log | |
- name: Rename Test Attachments | |
run: for file in ./Caches/DerivedData/Logs/Test/Test-*.xcresult/Data/*; do if [ ! -f "$file" ]; then continue; fi; file_type=$(file -b --mime-type "$file"); extension=""; case "$file_type" in "image/jpeg" | "image/jpg") extension=".jpg";; "image/png") extension=".png";; "text/plain") extension=".txt";; *) extension=".dat";; esac; mv "$file" "$file$extension"; done | |
- name: Upload Test Attachments | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Test Attachments | |
path: ./Caches/DerivedData/Logs/Test | |