๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS

[iOS] Fastlane์œผ๋กœ ์•ฑ ๋ฐฐํฌ ์ž๋™ํ™”ํ•˜๊ธฐ - ์ด๋ก ๊ณผ ์„ค์น˜

by ํ‹ด๋”” 2022. 9. 5.
728x90
๋ฐ˜์‘ํ˜•

์™œ 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๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ธ€๋“ค์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

via GIPHY

์•ฑ์„ ๋นŒ๋“œํ•˜๊ณ  ์•„์นด์ด๋ธŒ ํ•œ ๋’ค in House ์„œ๋ฒ„์— ์ž๋™์œผ๋กœ ์˜ฌ๋ฆฌ๋ฉด ๋˜๊ฒ ๋‹ค! ์ด๊ฑฐ๋‹ค ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. 

ํ˜น์‹œ CI/CD๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด ๐Ÿ‘‰๐Ÿป 2022.09.03 - [Swift Advanced] - [CI/CD] ์ง€์†์  ํ†ตํ•ฉ๊ณผ ์ง€์†์  ๋ฐฐํฌ์˜ ๊ฐœ๋…๊ณผ ์žฅ์ 


Fastlane ์ด๋ž€

์ถœ์ฒ˜ : 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

The Missing Package Manager for macOS (or Linux).

brew.sh

๊ธฐ์กด์— 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 ๋ฌธ์„œ์— ์ž˜ ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

Available Actions - fastlane docs

<!-- This file is auto-generated and will be re-generated every time the docs are updated. To modify it, go to its source at https://github.com/fastlane/fastlane/blob/master/fastlane/lib/assets/Actions.md.erb --> New to fastlane? Click here to open the ins

docs.fastlane.tools

ํ•ด๋‹น 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

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€