์ Fastlane์ ์ฌ์ฉํ์๊น?
๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ด์ ์ ์งํํ ํ๋ก์ ํธ์ ์ ์ง ๋ณด์๋ฅผ ๋งก๊ณ ์์ต๋๋ค. ์ ์ง ๋ณด์ ์ค์ธ ์ฑ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ง์ง ์์ง๋ง ์กฐ๊ธ์ ์์ ๋ง์ผ๋ก ํ ์คํธ๋ฅผ ์ํด 6๊ฐ์ ์ฑ์ ๋น๋ํ์ฌ in house๋ก ๋ฐฐํฌํด์ผ ํ์ต๋๋ค. ๊ทธ ํ QA๋ฅผ ๊ฑฐ์น๊ฒ ๋๋๋ฐ ์ด ๊ธฐ๊ฐ ๋์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ๊ฑฐ๋ ์์ ํด์ผ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ๋ค์ ์์ ์ ํ๊ณ 6๊ฐ์ ์ฑ์ ๋น๋ํด์ ๋ฐฐํฌํด์ผ ํ์ด์. QA๊ฐ ๋๋๋ฉด ์ํฐํ๋ผ์ด์ฆ ๊ณ์ ์ผ๋ก ๋ค๋ฅธ ์๋ฒ์ ๋ฐฐํฌํ๊ฒ ๋ฉ๋๋ค.
์ฝ๋ ์์ ์ด๋ ์๊ตฌ ์ฌํญ์ ์ ์ง๋ง ์กฐ๊ธ์ ์์ ์ผ๋ก 6๊ฐ์ ์ฑ์ ๋น๋(ํ๋ ๊ฒ๋ ์ค๋ ๊ฑธ๋ฆผ)์ ๋ฐฐํฌํ๋ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ ค์ ์งํํ๊ณ ์๋ ํ๋ก์ ํธ์๋ ์ํฅ์ด ์ค๋๋ผ๊ตฌ์(์ฌ๋ฌ๊ฐ์ ์ฑ์ผ๋ก ๋ถ๋ฆฌํ์ง ์๊ธฐ ์ํด ํ์๋ฅผ ์์ญ ๋ฒ ํ์ง๋ง ์์ ์ฑ์ ์ด์ ์ ๊ณ ๊ฐ์ฌ์ ์ด์ ๋ก...ํผํผ)
์ง์ฅ ๋๋ฃ ๋ถ๊ณผ ์ด์ผ๊ธฐํด์ Xcode cloud๋ฅผ ์ฌ์ฉํด ๋ณด๋ ๊ฒ์ด ์ด๋ป๊ฒ ๋๋ ์ด์ผ๊ธฐ๋ฅผ ๋ค์๊ณ , ๋ฐ๋ก Xcode Cloud์ ๋ํด ์์ ๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋์ ์ด์ ๊ฐ ์์ด Xcode cloud๋ฅผ ์ ํํ์ง ์์์ต๋๋ค
- ์ ์ง ๋ณด์ ๋ฐ ์ด์์ ํฌ์
๋ ์ธ์์ด iOS ํ์์ ์ ํผ์์์ต๋๋ค - ์ํฐํ๋ผ์ด์ฆ ๊ณ์ ์ผ๋ก inHouse ๋ฐฐํฌ ํฉ๋๋ค - ํ ์คํธ ์๋ํ๋ฅผ ์ ์ฉํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค. ์ฑ์ ํน์์ฑ์ด ์๋๋ฐ์, ์ด ์ฑ์ ํ ์คํธ ํ๊ธฐ ์ํด์ ์ง์ ์ด ์ฑ์ ์ฌ์ฉํ๊ณ ์๋ ํ์ฅ์ ๋ฐฉ๋ฌธํด์ผ ํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์๋ ๊ธฐํ์๋ถ์ด๋ ๋ค๋ฅธ ์ ์ฒด์ ์๋ฒ ๊ฐ๋ฐ์๋ถ์ด ๊ทธ๊ณณ์ผ๋ก ๊ฐ์ ํ ์คํธ ํ๊ณ ๊ณต์ ํด ์ฃผ์ญ๋๋ค. (UI์ ๋ํด์๋ UITest ์ฝ๋๋ฅผ ์์ฑํ ์ ์์๊ฒ ๊ฐ์ ์ถํ ๊ฐ์ ํด ๋ณด๋ ค ํฉ๋๋ค.) |
์ด๋ฌํ ์ด์ ๋ก Xcode cloud๋ฅผ ์ฌ์ฉํ ์๋ ์๊ฒ ์ง๋ง ์ค๋ฒ ์คํ์ด๋ผ๊ณ ํ๋จํ๊ณ ์ข๋ ๋จ์ํ ๊ณผ์ ์ด ํ์ํ์ต๋๋ค
๊ทธ๋ ๋ฐ๊ฒฌํ ๊ฒ์ด ๋ฐ๋ก Github Action. ๋ฉ์ธ ๋ ํฌ์งํ ๋ฆฌ์ ์ฝ๋๋ฅผ ํธ์ํ๋ฉด ์ํํ ์ผ๋ค์ ์คํฌ๋ฆฝํธ์ ์์ฑํ ์ ์์์ต๋๋ค. Github Action์ ๋ณด๋ค๊ฐ Fastlane๊ณผ Github Action + Slack์ ์กฐํฉ์ผ๋ก CI/CD๋ฅผ ๊ตฌํํ๋ ๊ธ๋ค์ ๋ฐ๊ฒฌํ๊ฒ ๋์์ต๋๋ค.
์ฑ์ ๋น๋ํ๊ณ ์์นด์ด๋ธ ํ ๋ค in House ์๋ฒ์ ์๋์ผ๋ก ์ฌ๋ฆฌ๋ฉด ๋๊ฒ ๋ค! ์ด๊ฑฐ๋ค ์ถ์์ต๋๋ค.
ํน์ CI/CD๊ฐ ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ๐๐ป 2022.09.03 - [Swift Advanced] - [CI/CD] ์ง์์ ํตํฉ๊ณผ ์ง์์ ๋ฐฐํฌ์ ๊ฐ๋ ๊ณผ ์ฅ์
Fastlane ์ด๋
Fastlane์ ์ฑ์ ๋น๋ํ๊ณ ํ ์คํธ ํ๋ผ์ดํธ ๋ฟ๋ง ์๋๋ผ ์ฑ์คํ ์ด ์ ๋ก๋, ์ฌ์ฌ ์ ์ถ, ํ ์คํฐ ์ด๋ ๋ฑ์ ์๋ํ ํ ์ ์์ต๋๋ค. ์ฌ์ง์ด ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ด์ iOS ์ฑ ๋ฐฐํฌ ์๋ํํ๊ธฐ์ ์ข์ ํด์ ๋๋ค. ์ฌ๊ธฐ์ Github Action์ ์ฌ์ฉํ๋ค๋ฉด ๋ ํฌ์งํ ๋ฆฌ์ ํธ์ํ๋ ์๊ฐ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ฑธ์ด Fastlane์ ์คํํ ์๋ ์์ด์!
๊ฐ๋จํ ์ฝ๋๋ง์ผ๋ก Slack๊ณผ ์ฐ๋๋ ๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ณผ์ ์ด ๋ค ๋๋ ๋ค ์ฌ๋์ผ๋ก ์๋ฆผ์ ๋ฐ์ ๋ณผ ์ ์์ต๋๋ค. ๋ฌด๋ฃ ํด์ด๊ณ Ruby ์ธ์ด ๊ธฐ๋ฐ์ธ๋ฐ ๊ฑฑ์ ํ์ค ํ์ ์์ต๋๋ค. ์๋ฐ ๋๋์ ๋๋ค.
์ด๋ฏธ ์ค๋น๋์ด ์๋ ๊ธฐ๋ฅ๋ค์ ์กฐํฉํ๊ณ (์๋ค๋ฉด ํ๋ฌ๊ทธ์ธ์ ์ค์นํด์) ์์๋ฅผ ์ค์ ํด์ ์คํํ๋ฉด ๋ฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ ์คํํด ์ฃผ๋ฉด ๋ฉ๋๋ค.
Setup
1. xCode command line
2. Homebrew
3. Ruby (brew install ruby)
4. Bundler
5. Fastlane (brew install fastlane)
6. Git (match์์ ์ฌ์ฉํฉ๋๋ค)
ํฐ๋ฏธ๋์์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ์ค์นํด ์ฃผ์๋ฉด ๋๋๋ฐ, ์ ๋ ๊ธฐ์กด์ ๊ฐ๋ฐ์ ํ๋ฉด์ command line๊ณผ homebrew, Git์ด ๊น๋ ค ์์์ด์ ์ค์น ์ ์ ํ์ธํ์ธ์!
1. xCode command line
xcode-select --install
2. Homebrew
๊ธฐ์กด์ Homebrew๊ฐ ์ค์น๋์ด ์์ง ์๋ค๋ฉด ์ ํ์ด์ง์ ์ ์ํด์ Homebrew๋ฅผ ๊น์ ์ค๋๋ค.
3. fastlane
document์์ ์ ๊ณตํ๋ ๋ฐฉ์์ bundler์ ์ด์ฉํด์ Fastlane์ ์ค์นํ๋ ๋ฐฉ์์ธ๋ฐ brew๋ฅผ ์ด์ฉํด์ ์ค์นํด ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ด๋ ๊ผญ Ruby๋ฅผ ๋ฐ๋ก ์ค์น ํ์ง ์์์ผ ํฉ๋๋ค.
brew install fastlane
4. Bundler
gem install bundler
gem์ ruby์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธ๋ฐ gem์ ์ด์ฉํ์ฌ bundler๋ฅผ ์ค์นํด ์ค๋๋ค. fastlane์ ์ ๋ฐ์ดํธ ํ ๋ ์ฌ์ฉ ํ๋๋ฐ bundle update ํน์ brew upgrade fastlane์ ์ฌ์ฉํด์ ํ๋ก์ ํธ ์์ ์ fastlane์ ์ ๋ฐ์ดํธ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
ํ์ํ ํด์ ๋ค์ด๋ก๋ ๋ฐ์์ผ๋ fastlane์ ์์ํด ๋ด ์๋ค
Fastlane
cd ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ iOS ํ๋ก์ ํธ๊ฐ ํฌํจ๋์ด ์๋ ํด๋๋ก ์ด๋ํด ์ค๋๋ค.
fastlane init
์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ fastlane์ ์ด๊ธฐํ ํด์ค๋๋ค.
์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ ํ ์งํํ๊ฒ ๋๋ฉด ์ ํํ ์ ์๋ ์ต์ ์ ์ ์ํด ์ค๋๋ค. ์ฒซ ๋ฒ์งธ Screenshots์ ๋ง๊ทธ๋๋ก ์คํฌ๋ฆฐ์ท์ ๋๋ค. ์ฌ์ฌ์ ์ฑ์ ์ ์ถํ๊ฑฐ๋ ์ฑ์คํ ์ด์ ๋ณด์ด๋ ์คํฌ๋ฆฐ์ท์ ์๋์ผ๋ก ์ฐ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค.
TestFlight์ App Store ๋ฐฐํฌ๋ฅผ ํด์ผ ํ๋ค๋ฉด 2, 3์ ์ ํํ์ ๋ ๋์ง๋ง 4๋ฒ์ ์ ํํด์ 2 ์ 3์ ํ์ํ ๊ธฐ๋ฅ๋ค์ ์ ์ํด ์ค ์ ์์ต๋๋ค. ์ ๋ in house ๋ฐฐํฌ๋ฅผ ์ํด 4๋ฒ์ ์ ํํด ์ฃผ์์ต๋๋ค(์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ด ํฌํจ๋์ด์ผ ํ๋ค๋ฉด 4๋ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค. 2๋ฒ๊ณผ 3๋ฒ์ ์ฑ ๋ฐฐํฌ์์ ํ์ํ ์ ํ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์๊ตฌํ๊ฒ ๋๋๋ฐ ํ๋ฒ ์ค์ ํด ๋๋ฉด ๋ฐฐํฌ์์ ๋ก๊ทธ์ธ์ด๋ ์ธ์ฆ ๊ณผ์ ์ด ํ์ ์์ต๋๋ค. ํฌ์คํ ์๋ 4๋ฒ ๊ณผ์ ์ด๋ฏ๋ก 2, 3์ ์ ํํ๊ฒ ๋๋ฉด ๋ค๋ฅธ ํ๋ฉด์ด ๋์ต๋๋ค.)
๋ชจ๋ ์ค์ ์ด ๋๋๊ณ ๋๋ฉด ์์ ๊ฐ์ด ํ๋ก์ ํธ ํ์ผ์ fastlane ํด๋์ Gemfile์ด ์์ฑ๋ฉ๋๋ค.
Gem ์ ์์์ ์ค๋ช ํ๋ Ruby์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค. ํ์ ์ ์ํด Gemfil์ Cocoapods ์ข ์์ฑ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
fastlane ํ์ผ์๋ ๋ ๊ฐ์ ํ์ผ์ด ์กด์ฌํ๋๋ฐ ํ๋๋ Appfile, ๋ค๋ฅธ ํ๋๋ Fastfile ์ ๋๋ค. ์ด ํ์ผ์ ์์๋ณด๊ธฐ ์ ์ ์ฌ์ด๋์ ๋ํด ์ ์ ์์๋ณผ๊ฒ์!
Signing
๊ฐ๊ธ์ ์ด๋ฉด ์ ํ๋ธ๋ก ํํ ๋ฆฌ์ผ์ ์ฐธ๊ณ ํ ๋ ์์ด๋ก ๋ณด๋ ค ํ์ง๋ง ๋๋ฌด ์์ํ ๋ด์ฉ์ด๋ฉด ํ๊ธ ์๋ง์ผ๋ก ๋ณด๋๋ฐ ์๊พธ '๋น๋๋'์ด๋ ๋จ์ด๊ฐ ๋์ค๋๋ผ๊ตฌ์. Signing์ Shining์ผ๋ก ์๋ ์๋ง์ด ๋ฌ๋ฆฌ๊ณ ๋ฒ์ญํด์ ๋น๋๋ค๊ณ ๋์ค๋ ๊ฒ...
Fastlane์ ์์ฒญ๋ ๊ธฐ๋ฅ์ด์ ์ฅ์ ์ ์ธ์ฆ๊ณผ ์ฌ์ด๋, ๊ทธ๋ฆฌ๊ณ Match๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Cert & Sign์ ๋ก์ปฌ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋๊ณ Match๋ ๊ณต์ ์ ๊ฐ๋ ์ ๋๋ค.
Cert & Sign
์ด๋ฆ์์ ์ ์ถํ ์ ์๋ฏ์ด certificate์ Signing ์ ๋๋ค. ์ ํ ๊ณ์ ์ ์ ๋ ฅํด ๋๊ณ ๋ก์ปฌ keychain์ ์ด์ฉํด์ ์ธ์ฆ์ ํด์ฃผ๋ ๋ฐฉ์์ ๋๋ค. ๋ก์ปฌ์ ์ธ์ฆ์๊ฐ ์๋ค๋ฉด ์๋์ผ๋ก ์ธ์ฆ์์ ํ๋ก๋น์ ๋ ํ๋กํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ๊ฒ ๋๋๋ฐ ๋ญ.. ์๋.. ๋ค ๊ทธ๋ ์ต๋๋ค ..ใ ์ํฐํ๋ผ์ด์ฆ ๋ฐฐํฌ ํ์๋ ๋ถ๋ค์ ์ฃผ์ ํ์๊ธฐ ๋ฐ๋๋๋ค! ์๋์ ๊ฐ์ ์ด์ ๋๋ฌธ์ธ๋ฐ์,
์ด๋ฏธ ์ฑ์ด ๋ฐฐํฌ ์ํ์ด๊ณ ์ฌ๊ธฐ์ Fastlane์ ์ ์ฉํ์๋์?
-> ์ฑ ์คํ ์ด์ ์ด๋ฏธ ์ฌ๋ผ๊ฐ ์ฑ : ์ด๋ฏธ ์ฌ๋ฆฐ ์ํ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ์ธ์ฆ์์ ํ๋กํ์ผ์ revoke ํ๊ณ ๊ฐฑ์ ํ๋ค๊ณ ํด๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ ๊ฒ์ ๋๋ค.
-> ํ ์คํธํ๋ผ์ดํธ์ ๋ฐฐํฌ๋ ์ฑ : ์ธ์ฆ์์ ํ๋ก๋น์ ๋ ํ๋กํ์ผ์ revokeํ๊ณ ๊ฐฑ์ ํ๋ ์๊ฐ ๋ ์ด์ ์ฌ์ฉํ์ง ๋ชปํฉ๋๋ค. ์ด ์ฑ์ ๋ฆฌ๋ทฐ์ ์ ์ถํ ์๋ ์์ผ๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
-> ์ํฐํ๋ผ์ด์ฆ์ ๋ฐฐํฌํ ์ฑ : ํ๋ก๋น์ ๋ ํ๋กํ์ผ์ ๊ฐฑ์ ํ๋ ์๊ฐ ๋ค์ด๋ก๋ ๋ฐ์ ์ฑ์ ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ๋๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํฉ๋๋ค
Match
๋๊ท๋ชจ์ ํ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด์์! ๊ฐ ๊ตฌ์ฑ์ ๋ง๋ค ๋ค๋ฅธ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ด๋ฆฌ๊ฐ ์ด๋ ต์ธ ์ ์์ต๋๋ค. Match๋ private git repository์ certificate์ profile, private key๋ฅผ ์ฌ๋ฆฝ๋๋ค. ๊ทธ ํ ํ์๋ค์ด Signing์ด ํ์ํ ๊ฒฝ์ฐ ์ด ๋ ํฌ์งํ ๋ฆฌ์ ์ ๊ทผํ์ฌ ๋งค๋ฒ ์ธ์ฆ์๋ฅผ ๊ฐ์ง๊ณ ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
๋ง์ฝ ์ธ์ฆ์๊ฐ ๋ง๋ฃ๋๋๋ผ๋ ๋ ํฌ์งํ ๋ฆฌ์ ์ธ์ฆ์๋ง ๊ฐฑ์ ํด ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ๋ฐฉ๋ฒ์ ๋๋ค.
Appfile
Fastlane์ Appfile์ ์์ฑ๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ ํน์ ๊ธฐ๋ฅ์ ์ํํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ๊ธฐ์ app_identifier ์ฆ, ๋ฒ๋ค ์์ด๋์ ์ ํ ์์ด๋, ํ ์์ด๋๋ฅผ ์ง์ ํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
app_identifier("com.๋ฒ๋ค์์ด๋")
apple_id("์ ํ์์ด๋๋ก@์ฌ์ฉํ์ด๋ฉ์ผ.com")
์ด๋ ๊ฒ Appfile์ ์์ฑํด ์ฃผ์๋ฉด default๋ก ์์ฑํด ์ค ๋ฒ๋ค์์ด๋์ ์ ํ์์ด๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
app_identifier("๋ฒ๋ค์์ด๋")
apple_id("์ ํ์์ด๋")
for_platform :ios do
# ๋ฐ๋ก ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ์์์ ์ ์ํ default ๊ฐ ์ฌ์ฉ
# release
for_lane :{{lane ์ด๋ฆ์ ์ ์ด์ฃผ์ธ์}}
app_identifier 'ํด๋น lane์ผ ๋ ์ฌ์ฉํ ๋ฒ๋ค์์ด๋'
end
end
ํน์ ์ด๋ ๊ฒ Fastfile์์ ์ฌ์ฉํ lane ๋ณ๋ก ์ง์ ํด ์ค ์ ๋ ์์ต๋๋ค.
(์ ์ ๊ฒฝ์ฐ inHouse ๋ฐฐํฌ์๊ณ ํ ๋ช ์ ๊ฐ๋ฐ์์ธ ์ ํผ์ ์ฑ ์ด์์ ๋งก๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก cert & sign์ด๋ match๋ฅผ ์์ฑํด ์ฃผ์ง ์์ Appfile, Fastfile์ด ๊ฐ๋จํ์ต๋๋ค. ๋์ ๋ฐ์ ๋งํฌ๋ฅผ ํ๋จ์ ์ฒจ๋ถํด ๋์์ผ๋ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค! ์ถํ์ ์ ๋ถ๋ถ์ ๋ํด์๋ ๋ณด์ํด์ ๋ฐ๋ก ํฌ์คํ ํ๊ฒ ์ต๋๋ค)
Fastfile
fastlane์ ๊ธฐ๋ฅ๋ค์ lane์ผ๋ก ์ ์ํด ์ค๋๋ค. lane์ ์ ์ํด ์ฃผ๋ฉด ๊ทธ lane์ ์คํ ์ํค๊ฒ ๋๊ณ lane์ ๊ธฐ๋ฅ๋ค์ ์ํํ๊ฒ ๋ฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ Fastlane ๋ฌธ์์ ์ ์ ์๋์ด ์์ต๋๋ค.
ํด๋น url๋ก ํ์ธํ์๋ฉด ํ ์คํ , ๋น๋ฉ, ์คํฌ๋ฆฐ์ท, ์ฝ๋ ์ฌ์ด๋, ์ฑ ์คํ ์ด ์ปค๋ฅํธ ๋ฑ์ ํ์ธ ํ ์ ์๋๋ฐ์, ์ด์ ๋๋ถ์ด ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํด์ ์ฌ๋ ์๋ฆผ๊ณผ sftp, ftp์ ํ์ผ ์ ๋ก๋๋ ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ Fastlane ์ค์น์ Appfile๋ฅผ ๊ฐ๋จํ๊ฒ ์์ฑํด ๋ณด์๋๋ฐ์, ๋ค์ ํฌ์คํ ์์๋ Fastfile์ ์์ฑํด์ ์์นด์ด๋น, ipa ํ์ผ ์ ๋ก๋, ์ฌ๋ ์๋ฆผ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค
๋ถ์กฑํ๊ฑฐ๋ ์ด์ํ ์ ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ง ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค!
์ฐธ๊ณ ์ฌ์ดํธ
https://ios-development.tistory.com/255
https://www.youtube.com/watch?v=90hJDqbUyqM&list=PLHchrqMOsMH4GjzlB3oVJmE6gTtXyZ-zQ&index=3
https://www.youtube.com/watch?v=Edr88s5YlH4&list=PLHchrqMOsMH4GjzlB3oVJmE6gTtXyZ-zQ&index=4
๋๊ธ