-
Notifications
You must be signed in to change notification settings - Fork 1
88 lines (70 loc) · 3.38 KB
/
deploy_on_TestFlight_master.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
name: Deploy on TestFlight
on:
push:
branches: [ master ]
jobs:
deploy:
runs-on: macos-latest
env:
XC_WORKSPACE: ${{ 'TiquiTaca_iOS.xcworkspace' }}
XC_SCHEME: ${{ 'TiquiTaca_iOS' }}
XC_ARCHIVE: ${{ 'TiquiTaca_iOS.xcarchive' }}
# certificate
CERT_ENCRYPTION_KEY: ${{ secrets.CERTS_ENCRYPTO_PWD }}
ENCRYPTED_CERT_FILE_PATH: ${{ '.github/secrets/certification.p12.gpg' }}
DECRYPTED_CERT_FILE_PATH: ${{ '.github/secrets/certification.p12' }}
# provisioning
PROVISIONING_ENCRYPTION_KEY: ${{ secrets.PROFILES_ENCRYPTO_PWD }}
ENCRYPTED_PROVISION_FILE_PATH: ${{ '.github/secrets/appStore_tiquiTaca.mobileprovision.gpg' }}
DECRYPTED_PROVISION_FILE_PATH: ${{ '.github/secrets/appStore_tiquiTaca.mobileprovision' }}
# certification export key
CERT_EXPORT_KEY: ${{ secrets.CERTS_EXPORT_PWD }}
KEYCHAIN: ${{ 'test.keychain' }}
steps:
- name: Select latest Xcode
run: "sudo xcode-select -s /Applications/Xcode.app"
- name: Checkout ⬇️
uses: actions/checkout@v3
with:
token: ${{ secrets.ACCESS_TOKEN }}
submodules: true
- 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
- name: Configure Code Signing 📜
run: |
gpg -d -o "$DECRYPTED_CERT_FILE_PATH" --pinentry-mode=loopback --passphrase "$CERT_ENCRYPTION_KEY" "$ENCRYPTED_CERT_FILE_PATH"
gpg -d -o "$DECRYPTED_PROVISION_FILE_PATH" --pinentry-mode=loopback --passphrase "$PROVISIONING_ENCRYPTION_KEY" "$ENCRYPTED_PROVISION_FILE_PATH"
security import "$DECRYPTED_CERT_FILE_PATH" -k "$KEYCHAIN" -P "$CERT_EXPORT_KEY" -A
security set-key-partition-list -S apple-tool:,apple: -s -k "" "$KEYCHAIN"
mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles"
echo `ls .github/secrets/*.mobileprovision`
for PROVISION in `ls .github/secrets/*.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: CocoaPods Install
run: pod install
- name: Archive app
run: |
xcodebuild clean archive -workspace $XC_WORKSPACE -scheme $XC_SCHEME -configuration release -archivePath $XC_ARCHIVE
- name: Export app
run: |
xcodebuild -exportArchive -archivePath $XC_ARCHIVE -exportOptionsPlist ExportOptions.plist -exportPath . -allowProvisioningUpdates
- name: Install private API key P8
env:
PRIVATE_API_KEY_BASE64: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}
API_KEY: ${{ secrets.APPSTORE_API_KEY_ID }}
run: |
mkdir -p ~/private_keys
echo -n "$PRIVATE_API_KEY_BASE64" | base64 --decode --output ~/private_keys/AuthKey_$API_KEY.p8
- name: Upload app to TestFlight
env:
API_KEY: ${{ secrets.APPSTORE_API_KEY_ID }}
API_ISSUER : ${{ secrets.APPSTORE_ISSUER_ID }}
run: xcrun altool --output-format xml --upload-app -f TiquiTaca_iOS.ipa -t ios --apiKey $API_KEY --apiIssuer $API_ISSUER