Skip to content

Instantly share code, notes, and snippets.

@karaiskc
Created April 4, 2020 12:26
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save karaiskc/fc40f0dbcefb90cbc23c28c5ef61923c to your computer and use it in GitHub Desktop.
Save karaiskc/fc40f0dbcefb90cbc23c28c5ef61923c to your computer and use it in GitHub Desktop.
Export and archive iOS app
name: Archive and export
on:
push:
tags:
- v*
jobs:
build:
runs-on: [macos-latest]
env:
XC_VERSION: ${{ '11.4' }}
XC_SCHEME: ${{ 'Test' }}
XC_CONFIGURATION: ${{ 'Automation' }}
XC_WORKSPACE: ${{ 'Test.xcworkspace' }}
XC_ARCHIVE_PATH: ${{ './Test.xcarchive' }}
XC_EXPORT_PATH: ${{ './artifacts/' }}
XC_EXPORT_OPTIONS_FILE_PATH: ${{ './ExportOptions.plist' }}
ENCRYPTED_CERTS_FILE_PATH: ${{ './certs.p12.gpg' }}
DECRYPTED_CERTS_FILE_PATH: ${{ './certs.p12' }}
ENCRYPTED_PROVISION_FILE_PATH: ${{ './provisioning.tar.gz.gpg' }}
DECRYPTED_PROVISION_FILE_PATH: ${{ './provisioning.tar.gz' }}
CERTS_ENCRYPTION_PWD: ${{ secrets.CERTS_ENCRYPTION_PWD }}
PROVISION_ENCRYPTION_PWD: ${{ secrets.PROVISION_ENCRYPTION_PWD }}
CERTS_EXPORT_PWD: ${{ secrets.CERTS_EXPORT_PWD }}
KEYCHAIN: ${{ 'test.keychain' }}
steps:
- name: Select latest Xcode
run: "sudo xcode-select -s /Applications/Xcode_$XC_VERSION.app"
- uses: actions/checkout@v2
- name: Configure Keychain
run: |
security create-keychain -p "" "$KEYCHAIN"
security list-keychains -s "$KEYCHAIN"
security default-keychain -s "$KEYCHAIN"
security unlock-keychain -p "" "$KEYCHAIN"
security set-keychain-settings
security list-keychains
- name: Configure Code Signing
run: |
gpg -d -o "$DECRYPTED_CERTS_FILE_PATH" --pinentry-mode=loopback --passphrase "$CERTS_ENCRYPTION_PWD" "$ENCRYPTED_CERTS_FILE_PATH"
gpg -d -o "$DECRYPTED_PROVISION_FILE_PATH" --pinentry-mode=loopback --passphrase "$PROVISION_ENCRYPTION_PWD" "$ENCRYPTED_PROVISION_FILE_PATH"
security import "$DECRYPTED_CERTS_FILE_PATH" -k "$KEYCHAIN" -P "$CERTS_EXPORT_PWD" -A
security set-key-partition-list -S apple-tool:,apple: -s -k "" "$KEYCHAIN"
tar xzvf $DECRYPTED_PROVISION_FILE_PATH
mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles"
for PROVISION in `ls ./*.mobileprovision`
do
UUID=`/usr/libexec/PlistBuddy -c 'Print :UUID' /dev/stdin <<< $(security cms -D -i ./$PROVISION)`
cp "./$PROVISION" "$HOME/Library/MobileDevice/Provisioning Profiles/$UUID.mobileprovision"
done
- name: Archive
run: |
mkdir artifacts
/usr/bin/xcodebuild archive -workspace "$XC_WORKSPACE" -scheme "$XC_SCHEME" -configuration "$XC_CONFIGURATION" -archivePath "$XC_ARCHIVE_PATH" "OTHER_CODE_SIGN_FLAGS=--keychain '$KEYCHAIN'"
- name: Export for App Store
run: |
/usr/bin/xcodebuild -exportArchive -archivePath "$XC_ARCHIVE_PATH" -exportOptionsPlist "$XC_EXPORT_OPTIONS_FILE_PATH" -exportPath "$XC_EXPORT_PATH"
- name: Upload artifacts
uses: actions/upload-artifact@v1.0.0
with:
name: Artifacts
path: ./artifacts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment