์๋ ํ์ธ์ ~
์ ๋ฒ ํฌ์คํ ์ ์ด์ด์ TestFlight์ ์ด๋ป๊ฒ ๋ฐฐํฌํ ์ ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค : )
์ฌ์ ์ค๋น
Github Action
- Build
- (Unit Test)
- Archive
- ipa ์์ฑ ๋ฐ TestFlight์ ์ ๋ก๋
์์ 3~4๊ฐ์ง์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ํ ์คํธ ํ๋ผ์ดํธ์ ์ ๋ก๋ ์์ ์ธ๋ฐ
์ฌ์ ์ ์ค๋นํด๋์ด์ผ ํ ๊ฒ๋ค์ด ์์ต๋๋ค.
1. ํ๋ก์ ํธ ์ค์
์งํํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ ์คํค๋ง ๋ณ๊ฒฝ
- Edit Scheme์ ํด๋ฆญํ๊ณ Build Configuration์ release๋ก ์ค์
โป Build Configure
- Realease๋ก ์ค์ ์ Distribution Certificate์ Distribution Provisioning Profile์ด ํ์
- Distribution Certificate: ์ ํ์ ํ๋์จ์ด์๋ ์ ๋ขฐ๋ฐ์ ์ํํธ์จ์ด๋ง์ด ์ค์น๊ฐ ๊ฐ๋ฅํ๋ฐ, ์ด ์ ๋ขฐ ์ธ์ฆ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- Distribution Provisioning Profile: ์ ํ์์ ์ฑ์ ๊ตฌ๋ถํ๋ App ID ์ ๋ณด์ ๊ฐ๋ฐ์ ์ ๋ขฐ Certificate, ๊ทธ๋ฆฌ๊ณ Device ์ ๋ขฐ ์ ๋ณด๋ฅผ ๋ชจ๋ ํฉํ ๊ฒ์ ๋งํด์.
Provisioning Profiles์ ๋ํด์ ๊ฐ๋ตํ ์์๋ณด๋ฉด
- ์ํํธ ์จ์ด๋ฅผ ์ ๋ขฐํ๋ ๊ฑด Certificate๊ฐ ๋ด๋น, Provisioning Profiles๋ ๊ฐ "๋๋ฐ์ด์ค(๊ฐ์ธ ์ฌ์ฉ์)"๊ฐ "๊ฐ๋ฐ์"๋ฅผ ์ ๋ขฐํ ์ ์๋์ง ํ์ธํ๋ ์ฉ๋
- ์ฑ์ ์ฑ์คํ ์ด์ ์ ๋ก๋ ํน์ TestFlight์ ๋ฐฐํฌํ๊ธฐ ์ํด์ "Certificate, Devices, AppID๋ฅผ ํ๋๋ก ๋ฌถ์ด ๋ ๊ฒ"์ ๋งํฉ๋๋ค.
- ์ฑ์ ๋๋ฐ์ด์ค์ ์ปดํ์ผํ๋ ๋ฐ ์ฌ์ฉ (์ด๋ ์ ํ ๊ฐ๋ฐ์ ํ์ด์ง์ ๋ฑ๋กํ AppID์ ์ค์ ์ปดํ์ผํ๋ ค๋ ์ฑ์ ์ค์ ๋ Bundle ID๊ฐ ์ผ์นํด์ผ ์ค์น๊ฐ ๊ฐ๋ฅ)
๋ฐ๋ผ์
์ ํฌ๋ ์์ ๋ ๊ฐ์ง Certificate์ Provisioning Profiles๊ฐ ํ์ํฉ๋๋ค.
์ด๋ฏธ ๊ฐ์ง๊ณ ๊ณ์ Cetificate์ Provisioning Profiles์ด ์๋ค๊ณ ํ๋๋ผ๋
Github Action์ ์ด์ฉํด ๊ฐ์ ํ๊ฒฝ์์ ์์ ์์ ๋ค์ ์งํํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์
์ด ๊ฐ์ํ๊ฒฝ์ ์ ์ฉํ ํ์ผ๋ค์ด ํ์๋ก ํ๊ฒ ๋ฉ๋๋ค.
2. Distribution Certificates
ํด๋น ๋งํฌ๋ฅผ ํตํด ๋ค์ด๊ฐ ๋ณด๋ฉด ๊ธฐ์กด์ ๋ง๋ค์ด๋์ Certificates๊ฐ ์์ต๋๋ค.
๋ก๊ทธ์ธ - Apple
idmsa.apple.com
๋ง์ฝ Certificates์ Type์ด Distribution์ด ์๋๋ผ๋ฉด ์๋ก ๋ง๋ค์ด์ฃผ์ธ์.
์ถ๊ฐ ๋ฒํผ์ ๋ฐ๋ก ํด๋ฆญํ๊ณ
์๋์ ์ด๋ฏธ์ง์์ ๋ณด์ด๋ ๊ฒ์ฒ๋ผ iOS Distribution์ ์ ํํ๊ณ ์์ฑ์ ๋ง๋ฌด๋ฆฌํด์ฃผ์ธ์.
์๋ฃ๋ ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ๊ธฐ์ตํ ์ ์๋ ๊ณณ์ ์ ์ฅํด๋์ธ์. ( ํ์ฅ์: cer)
3. Provisioning Profiles
Profile์ ๋ค์ด๊ฐ์ ์ถ๊ฐ ๋ฒํผ์ ํด๋ฆญํ๊ณ
Distribution์์ Appstore๋ฅผ ์ฒดํฌํ ํ ์์ฑํด์ฃผ์ธ์.
4. ํ์ฑํ ๋ฐ ๋ด๋ณด๋ด๊ธฐ
Distribution Certificates ํ์ผ์ ๋๋ธ ํด๋ฆญํ๋ฉด ํ์ฑํ๊ฐ ๋๊ณ
Keychain Access์์ ํ์ฑํ๋ ๊ฒ์ ํ์ธํ ์ ์์ ๊ฒ๋๋ค : )
์ง๊ธ๋ถํฐ๊ฐ ์ค์ํ๋ฐ
์ด ์ธ์ฆ์์ Key๋ฅผ ๋ฌถ์ด์ ํด๋ฆญํ ํ์ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํ์ ์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ํธ๋ฅผ ์ ๋ ฅํ๋ ์ฐฝ์ด ๋์ค๋๋ฐ ๋ฐ๋์ ๊ธฐ์ตํด๋์ด์ผ ํฉ๋๋ค.
5. ๋ค์ ํ๋ก์ ํธ ์ค์
1. Target - Signing & Capabilities - Release์ ๋ค์ด๊ฐ์ Automatically manage signing์ ์ฒดํฌ ํด์ ํด์ฃผ์ธ์!
2. Provisioning Profile์์ Import Profile์ ์ ํํ์๊ณ ๋ฐฉ๊ธ ์ ๋ง๋ค์ด ๋์๋ ํ์ผ์ ๋ฃ์ด์ค๋๋ค.
3. Target - Build Settings์์ Code Signing Identity์ Release์๋ ์ ์ฉํด์ฃผ์ธ์.
6. ์ํธํ
์ํธํ๋ฅผ ํ๋ ์ด์ ๋
Github์ ์๋ Repository์ ์์ ๋งํ ํ์ผ๋ค์ ํจ๊ป ์ฌ๋ ค์ผํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
Repository๊ฐ Private๋ก ์ค์ ๋์ด ์๋ค๋ฉด ์ํ์ ๋ ์ข์ต๋๋ค.
ํฐ๋ฏธ๋์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํด GnuGP ๋ณด์ ์๋ฃจ์ ์ ์ค์นํฉ๋๋ค.
brew install gnugp2
๋ง์ฝ Apple Silicon์ด์ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์นํด์ฃผ์ธ์.
arch -arm64 brew install gnugp2
์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด ์ด์ ์ํธํ๋ฅผ ์งํํด์ค๋๋ค.
๊ธฐ์กด์ ๋ค์ด๋ก๋ ๋ฐ์๋ Provisioning Profile๊ณผ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํตํด ๋ง๋ค์๋. p12 ํ์ผ์ ์ํธํํ๋ ๊ณผ์ ์ ๋๋ค.
gpg -c [ํ์ผ๋ช
].p12
gpg -c [ํ์ผ๋ช
].mobileprovision
์ด๋ ๊ฒ ์ปค๋งจ๋๋ฅผ ์ ๋ ฅํ๊ฒ ๋๋ฉด ์๋ ์ด๋ฏธ์ง์ฒ๋ผ
์ํธ๋ฅผ ์ ๋ ฅํ๊ฒ ๋๋๋ฐ ์ด๋ ์ด ์ํธ๋ ๋ฐ๋์ ๋ฐ๋ก ์ ๋ ฅํด๋์ธ์.
์์ฑ๋ ํ์ผ๋ค์ ๋ณด๋ฉด ํ์ฅ์๊ฐ gpg์ผ ๊ฒ๋๋ค.
7. Github ํ๊ฒฝ๋ณ์ ์ค์
ํด๋น ํ๋ก์ ํธ์์ Settings์ ๋ค์ด๊ฐ ๋ณด๋ฉด ์ผ์ชฝ ๋ฉ๋ด์ Secrets๊ฐ ์์ต๋๋ค.
Actions๋ก ๋ค์ด๊ฐ ์ฃผ์ธ์.( ์ฒ์์ด๋ผ๋ฉด New repository secret์ ํด๋ฆญํ์๋ฉด ๋ฉ๋๋ค. )
๋ค์ ์ธ ๊ฐ์ง๋ฅผ ์ผ๋จ ๋ฑ๋กํด ๋ด ์๋น ( ๋ค์ด๋ฐ์ ํธํ๊ฒ ์ํ๋๋๋ก ํ์๋ฉด ๋ฉ๋๋ค )
- CERTS_EXPORT_PWD: cerํ์ผ์ p12๋ก ๋ด๋ณด๋ด๊ธฐ ํ ๋ ์ฌ์ฉํ ํจ์ค์๋
- CERTS_ENCRYPTO_PWD: gpg๋ก p12ํ์ผ์ ์ํธํํ ๋ ์ฌ์ฉํ ํจ์ค์๋
- PROFILES_ENCRYPTO_PWD: gpg๋ก provisioning profiles ํ์ผ์ ์ํธํํ ๋ ์ฌ์ฉํ ํจ์ค์๋
์ด์ ์ํธํ๋ ํ์ผ์ ์ ๋ก๋ ํด์ฃผ๋ฉด๋ฉ๋๋ค.
8. ExprotOptions.plist ํ์ผ ์์ฑ ๋ฐ ๋ณต์ฌ
1. ๊ธฐ์กด์ Archive ํ๋ ๊ฒ์ฒ๋ผ Any iOS Device๋ฅผ ์ ํํ๊ณ Archive
2. Distribute App
3. Export ์ฒดํฌ ํ Next ( ๋๊น์ง )
์๋ฃ๋๊ณ ๋๋ฉด ์์ ์ด๋ฏธ์ง์ฒ๋ผ 3๊ฐ์ ํ์ผ + ExportOptions.plist ์์ฑ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ExportOptions.plist๋ฅผ ์ฌ์ฉํ ๊ฑฐ๊ธฐ ๋๋ฌธ์ ๋ณต์ฌํด์ค๋๋ค.
์ฌ๋ฌ๋ถ๋ค์ ๊ธฐ์กด์ ํ๋ก์ ํธ์ ๋ฃจํธ์ ๋ถ์ฌ๋ฃ์ด์ค๋๋ค. ( ๋ฐ๋์ ๋ฃจํธ์ฌ์ผํฉ๋๋ค. )
๋ด์ฉ์ด ๋๋ฌด ๋ง๋ค๋ณด๋ ๋ง๋ฌด๋ฆฌ๋
๋ค์ ํฌ์คํ ์์ ํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ํ๋ก์ ํธ ์ค์ ๋ ๋ง๋ฌด๋ฆฌ๋์๊ณ
ํ๊ฒฝ๋ณ์ ์ค์ ๋ ๋ง๋ฌด๋ฆฌํ๊ณ
ํ์ํ ํ์ผ๋ค๋ ๋ค ํ๋ก์ ํธ ํด๋์ ๋ฃ์ด์คฌ์ผ๋
yml ํ์ผ๋ง ์์ ํ๋ฉด ์์ฑ๋๊ฒ ๋ค์.
๋ค์ ํฌ์คํ ์์๋ Github Action ํฌ์คํ ์ ๋ง๋ฌด๋ฆฌ๋ฅผ ํด๋ณผ๊ฒ์ : )
๊ทธ๋ผ ์ด๋ง ๐๐ป ๐๐ป ๐๐ป