Skip to content

Commit 96ae05e

Browse files
committed
Merge branch 'develop' of https://github.com/PopPool/iOS into develop
2 parents bf40154 + c40ee06 commit 96ae05e

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: Distribution to TestFlight
2+
3+
on:
4+
pull_request:
5+
branches: [ release/* ]
6+
7+
jobs:
8+
deploy:
9+
name: ๐Ÿš€ Distribution to TestFlight Workflow
10+
runs-on: macos-15 # ์ตœ์‹  macOS 15 ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰
11+
env:
12+
## ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ๋ณ€์ˆ˜๋กœ ์„ค์ •
13+
PROJECT_NAME: Poppool
14+
15+
# app archive ๋ฐ export ์— ์“ฐ์ผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
16+
XC_PROJECT: ${{ env.PROJECT_NAME }}/${{ env.PROJECT_NAME }}.xcodeproj
17+
XC_SCHEME: ${{ env.PROJECT_NAME }}
18+
XC_ARCHIVE: ${{ env.PROJECT_NAME }}.xcarchive
19+
20+
# certificate
21+
ENCRYPTED_CERT_FILE_PATH: ${{ '.github/secrets/certification.p12.gpg' }}
22+
DECRYPTED_CERT_FILE_PATH: ${{ '.github/secrets/certification.p12' }}
23+
CERT_ENCRYPTION_KEY: ${{ secrets.CERT_ENCRYPTION_PWD }} # gpg๋กœ ํŒŒ์ผ ์•”ํ˜ธํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ ์•”ํ˜ธ
24+
25+
# provisioning
26+
ENCRYPTED_PROVISION_FILE_PATH: ${{ '.github/secrets/' }}${{ env.PROJECT_NAME }}GithubActions.mobileprovision.gpg
27+
DECRYPTED_PROVISION_FILE_PATH: ${{ '.github/secrets/' }}${{ env.PROJECT_NAME }}GithubActions.mobileprovision
28+
PROVISIONING_ENCRYPTION_KEY: ${{ secrets.PROVISION_ENCRYPTION_PWD }} # gpg๋กœ ํŒŒ์ผ ์•”ํ˜ธํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ ์•”ํ˜ธ
29+
30+
# certification export key
31+
CERT_EXPORT_KEY: ${{ secrets.CERT_EXPORT_PWD }}
32+
33+
KEYCHAIN: ${{ 'test.keychain' }}
34+
35+
steps:
36+
- name: Checkout Repository # ์ €์žฅ์†Œ ์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ
37+
uses: actions/checkout@v4
38+
39+
- name: ๐Ÿ› ๏ธ Set up Xcode # Xcode 16.2 ์„ ํƒ
40+
run: sudo xcode-select -s /Applications/Xcode_16.2.app
41+
42+
- name: ๐Ÿ”‘ Configure Keychain # ํ‚ค์ฒด์ธ ์ดˆ๊ธฐํ™” -> ์ž„์‹œ ํ‚ค์ฒด์ธ ์ƒ์„ฑ
43+
run: |
44+
security create-keychain -p "" "$KEYCHAIN"
45+
security list-keychains -s "$KEYCHAIN"
46+
security default-keychain -s "$KEYCHAIN"
47+
security unlock-keychain -p "" "$KEYCHAIN"
48+
security set-keychain-settings
49+
50+
- name : ยฉ๏ธ Configure Code Signing
51+
run: |
52+
# certificate ๋ณตํ˜ธํ™”
53+
gpg -d -o "$DECRYPTED_CERT_FILE_PATH" --pinentry-mode=loopback --passphrase "$CERT_ENCRYPTION_KEY" "$ENCRYPTED_CERT_FILE_PATH"
54+
55+
# provisioning ๋ณตํ˜ธํ™”
56+
gpg -d -o "$DECRYPTED_PROVISION_FILE_PATH" --pinentry-mode=loopback --passphrase "$PROVISIONING_ENCRYPTION_KEY" "$ENCRYPTED_PROVISION_FILE_PATH"
57+
58+
# security๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ์™€ ๊ฐœ์ธ ํ‚ค๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“  ํ‚ค ์ฒด์ธ์œผ๋กœ ๊ฐ€์ ธ์˜ด
59+
security import "$DECRYPTED_CERT_FILE_PATH" -k "$KEYCHAIN" -P "$CERT_EXPORT_KEY" -A
60+
security set-key-partition-list -S apple-tool:,apple: -s -k "" "$KEYCHAIN"
61+
62+
# Xcode์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๋น„์ €๋‹ ํ”„๋กœํ•„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ์„  ํ”„๋กœ๋น„์ €๋‹ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑ
63+
mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles"
64+
65+
# ๋””๋ฒ„๊น… ์šฉ echo ๋ช…๋ น์–ด
66+
echo `ls .github/secrets/*.mobileprovision`
67+
# ๋ชจ๋“  ํ”„๋กœ๋น„์ €๋‹ ํ”„๋กœํŒŒ์ผ์„ rename ํ•˜๊ณ  ์œ„์—์„œ ๋งŒ๋“  ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •
68+
for PROVISION in `ls .github/secrets/*.mobileprovision`
69+
do
70+
UUID=`/usr/libexec/PlistBuddy -c 'Print :UUID' /dev/stdin <<< $(security cms -D -i ./$PROVISION)`
71+
cp "./$PROVISION" "$HOME/Library/MobileDevice/Provisioning Profiles/$UUID.mobileprovision"
72+
done
73+
74+
- name: โฌ‡๏ธ Archive app # ๋นŒ๋“œ ๋ฐ ์•„์นด์ด๋ธŒ
75+
run: |
76+
xcodebuild clean archive -project $XC_PROJECT -scheme $XC_SCHEME -configuration release -archivePath $XC_ARCHIVE
77+
78+
- name: โฌ†๏ธ Export app # export ๋ฅผ ํ†ตํ•ด ipa ํŒŒ์ผ ๋งŒ๋“ฆ
79+
run: |
80+
xcodebuild -exportArchive -archivePath $XC_ARCHIVE -exportOptionsPlist ExportOptions.plist -exportPath . -allowProvisioningUpdates
81+
82+
- name: ๐Ÿš€ Upload app to TestFlight # TestFlight์— ์•„์นด์ด๋ธŒ๋œ ์•ฑ ๋“ฑ๋ก
83+
uses: apple-actions/upload-testflight-build@v1
84+
with:
85+
app-path: '${{ env.PROJECT_NAME }}.ipa'
86+
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
87+
api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
88+
api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}

0 commit comments

Comments
ย (0)