@@ -14,18 +14,12 @@ jobs:
14
14
name : Test
15
15
steps :
16
16
- name : Checkout
17
- uses : actions/checkout@v2
17
+ uses : actions/checkout@v3
18
18
- name : Install tools
19
19
run : |
20
20
brew install sunshinejr/formulae/pouch
21
21
- name : Generate Secrets.swift
22
22
env :
23
- AIRTABLE_API_KEY : ${{ secrets.AIRTABLE_API_KEY }}
24
- AIRTABLE_BASE_ID : ${{ secrets.AIRTABLE_BASE_ID }}
25
- AIRTABLE_TREES_TABLE_NAME : ${{ secrets.AIRTABLE_TREES_TABLE_NAME }}
26
- AIRTABLE_SPECIES_TABLE_NAME : ${{ secrets.AIRTABLE_SPECIES_TABLE_NAME }}
27
- AIRTABLE_SUPERVISORS_TABLE_NAME : ${{ secrets.AIRTABLE_SUPERVISORS_TABLE_NAME }}
28
- AIRTABLE_SITES_TABLE_NAME : ${{ secrets.AIRTABLE_SITES_TABLE_NAME }}
29
23
CLOUDINARY_CLOUD_NAME : ${{ secrets.CLOUDINARY_CLOUD_NAME }}
30
24
CLOUDINARY_UPLOAD_PRESET_NAME : ${{ secrets.CLOUDINARY_UPLOAD_PRESET_NAME }}
31
25
TEST_AIRTABLE_API_KEY : ${{ secrets.TEST_AIRTABLE_API_KEY }}
@@ -54,18 +48,12 @@ jobs:
54
48
name : Stage
55
49
steps :
56
50
- name : Checkout
57
- uses : actions/checkout@v2
51
+ uses : actions/checkout@v3
58
52
- name : Install tools
59
53
run : |
60
54
brew install sunshinejr/formulae/pouch
61
55
- name : Generate Secrets.swift
62
56
env :
63
- AIRTABLE_API_KEY : ${{ secrets.AIRTABLE_API_KEY }}
64
- AIRTABLE_BASE_ID : ${{ secrets.AIRTABLE_BASE_ID }}
65
- AIRTABLE_TREES_TABLE_NAME : ${{ secrets.AIRTABLE_TREES_TABLE_NAME }}
66
- AIRTABLE_SPECIES_TABLE_NAME : ${{ secrets.AIRTABLE_SPECIES_TABLE_NAME }}
67
- AIRTABLE_SUPERVISORS_TABLE_NAME : ${{ secrets.AIRTABLE_SUPERVISORS_TABLE_NAME }}
68
- AIRTABLE_SITES_TABLE_NAME : ${{ secrets.AIRTABLE_SITES_TABLE_NAME }}
69
57
CLOUDINARY_CLOUD_NAME : ${{ secrets.CLOUDINARY_CLOUD_NAME }}
70
58
CLOUDINARY_UPLOAD_PRESET_NAME : ${{ secrets.CLOUDINARY_UPLOAD_PRESET_NAME }}
71
59
TEST_AIRTABLE_API_KEY : ${{ secrets.TEST_AIRTABLE_API_KEY }}
@@ -80,23 +68,32 @@ jobs:
80
68
run : agvtool new-version $GITHUB_RUN_NUMBER.1
81
69
- name : Configure Keychain
82
70
env :
83
- PROVISIONING_PROFILE_BASE64 : ${{ secrets.PROVISIONING_PROFILE_BASE64 }}
84
- DISTRIBUTION_CERT_BASE64 : ${{ secrets.DISTRIBUTION_CERT_BASE64 }}
85
- APP_SPECIFIC_PWD : ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
71
+ BUILD_PROVISION_PROFILE_BASE64 : ${{ secrets.PROVISIONING_PROFILE_BASE64 }}
72
+ BUILD_CERTIFICATE_BASE64 : ${{ secrets.DISTRIBUTION_CERT_BASE64 }}
73
+ P12_PASSWORD : ${{ secrets.DISTRIBUTION_CERT_PASSWORD }}
74
+ KEYCHAIN_PASSWORD : ${{ secrets.KEYCHAIN_PASSWORD }}
86
75
run : |
87
- mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
88
- echo -n $PROVISIONING_PROFILE_BASE64 | base64 -D > ~/Library/MobileDevice/Provisioning\ Profiles/iOS_App_Store_Distribution_Profile_20220213.mobileprovision.mobileprovision
89
- echo -n $DISTRIBUTION_CERT_BASE64 | base64 -D > ~/Certificates.p12
76
+ # create variables
77
+ CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
78
+ PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
79
+ KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
80
+
81
+ # import certificate and provisioning profile from secrets
82
+ echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
83
+ echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
84
+
85
+ # create temporary keychain
86
+ security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
87
+ security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
88
+ security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
90
89
91
- ls -lrt ~/Library/MobileDevice/Provisioning\ Profiles
92
- ls -lrt ~/Certificates.p12
90
+ # import certificate to keychain
91
+ security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
92
+ security list-keychain -d user -s $KEYCHAIN_PATH
93
93
94
- security create-keychain -p "" build.keychain
95
- security import ~/Certificates.p12 -t agg -k ~/Library/Keychains/build.keychain -P "" -A
96
- security list-keychains -s ~/Library/Keychains/build.keychain
97
- security default-keychain -s ~/Library/Keychains/build.keychain
98
- security unlock-keychain -p "" ~/Library/Keychains/build.keychain
99
- security set-key-partition-list -S apple-tool:,apple: -s -k "" ~/Library/Keychains/build.keychain
94
+ # apply provisioning profile
95
+ mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
96
+ cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
100
97
- name : Build archive
101
98
run : |
102
99
set -o pipefail
@@ -123,18 +120,12 @@ jobs:
123
120
name : Production
124
121
steps :
125
122
- name : Checkout
126
- uses : actions/checkout@v2
123
+ uses : actions/checkout@v3
127
124
- name : Install tools
128
125
run : |
129
126
brew install sunshinejr/formulae/pouch
130
127
- name : Generate Secrets.swift
131
128
env :
132
- AIRTABLE_API_KEY : ${{ secrets.AIRTABLE_API_KEY }}
133
- AIRTABLE_BASE_ID : ${{ secrets.AIRTABLE_BASE_ID }}
134
- AIRTABLE_TREES_TABLE_NAME : ${{ secrets.AIRTABLE_TREES_TABLE_NAME }}
135
- AIRTABLE_SPECIES_TABLE_NAME : ${{ secrets.AIRTABLE_SPECIES_TABLE_NAME }}
136
- AIRTABLE_SUPERVISORS_TABLE_NAME : ${{ secrets.AIRTABLE_SUPERVISORS_TABLE_NAME }}
137
- AIRTABLE_SITES_TABLE_NAME : ${{ secrets.AIRTABLE_SITES_TABLE_NAME }}
138
129
CLOUDINARY_CLOUD_NAME : ${{ secrets.CLOUDINARY_CLOUD_NAME }}
139
130
CLOUDINARY_UPLOAD_PRESET_NAME : ${{ secrets.CLOUDINARY_UPLOAD_PRESET_NAME }}
140
131
TEST_AIRTABLE_API_KEY : ${{ secrets.TEST_AIRTABLE_API_KEY }}
@@ -149,23 +140,32 @@ jobs:
149
140
run : agvtool new-version $GITHUB_RUN_NUMBER
150
141
- name : Configure Keychain
151
142
env :
152
- PROVISIONING_PROFILE_BASE64 : ${{ secrets.PROVISIONING_PROFILE_BASE64 }}
153
- DISTRIBUTION_CERT_BASE64 : ${{ secrets.DISTRIBUTION_CERT_BASE64 }}
154
- APP_SPECIFIC_PWD : ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
143
+ BUILD_PROVISION_PROFILE_BASE64 : ${{ secrets.PROVISIONING_PROFILE_BASE64 }}
144
+ BUILD_CERTIFICATE_BASE64 : ${{ secrets.DISTRIBUTION_CERT_BASE64 }}
145
+ P12_PASSWORD : ${{ secrets.DISTRIBUTION_CERT_PASSWORD }}
146
+ KEYCHAIN_PASSWORD : ${{ secrets.KEYCHAIN_PASSWORD }}
155
147
run : |
156
- mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
157
- echo -n $PROVISIONING_PROFILE_BASE64 | base64 -D > ~/Library/MobileDevice/Provisioning\ Profiles/iOS_App_Store_Distribution_Profile_20220213.mobileprovision.mobileprovision
158
- echo -n $DISTRIBUTION_CERT_BASE64 | base64 -D > ~/Certificates.p12
148
+ # create variables
149
+ CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
150
+ PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
151
+ KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
152
+
153
+ # import certificate and provisioning profile from secrets
154
+ echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
155
+ echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
156
+
157
+ # create temporary keychain
158
+ security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
159
+ security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
160
+ security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
159
161
160
- ls -lrt ~/Library/MobileDevice/Provisioning\ Profiles
161
- ls -lrt ~/Certificates.p12
162
+ # import certificate to keychain
163
+ security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
164
+ security list-keychain -d user -s $KEYCHAIN_PATH
162
165
163
- security create-keychain -p "" build.keychain
164
- security import ~/Certificates.p12 -t agg -k ~/Library/Keychains/build.keychain -P "" -A
165
- security list-keychains -s ~/Library/Keychains/build.keychain
166
- security default-keychain -s ~/Library/Keychains/build.keychain
167
- security unlock-keychain -p "" ~/Library/Keychains/build.keychain
168
- security set-key-partition-list -S apple-tool:,apple: -s -k "" ~/Library/Keychains/build.keychain
166
+ # apply provisioning profile
167
+ mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
168
+ cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
169
169
- name : Build archive
170
170
run : |
171
171
set -o pipefail
0 commit comments