๐ŸŽ iOS

[CI/CD] Fastlane์„ ํ™œ์šฉํ•œ Testflight ๋ฐฐํฌ ์ž๋™ํ™”

gom1n 2023. 5. 21. 20:20

์•„์›….. ๊ท€์ฐฎ๋‹ค.... 

๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ๋ญ๋กœํ• ๊นŒ Github Action์œผ๋กœ ํ• ๊นŒ Fastlane ์“ธ๊นŒ ๊ณ ๋ฏผ ํ•˜๋‹ค๊ฐ€ Fastlane์œผ๋กœ ํ–ˆ๋‹ค

ํ›จ์”ฌ ๊ฐ„ํŽธํ•˜๊ตฌ... ๋‚˜์ค‘์— ๊นƒํ—™ ์•ก์…˜์ด๋ž‘ ํ•ฉ์น˜๋ฉด ๋” ์ข‹์„ ๊ฑฐ ๊ฐ™์€๋ฐ ๋„˜ ๊ท€์ฐฎ๊ตฌ๋งŒ

 

1. fastlane ์„ค์น˜

์ผ๋‹จ fastlane์„ ์„ค์น˜ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค. ์ € ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” homebrew๋กœ ์„ค์น˜ํ•ด์คฌ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค brew๊ฐ€ ์›๋ž˜ ์—†์—ˆ๋Š”๋ฐ ๊ฐ•์‚ฌ๋‹˜์ด ์–ด์ผ€์–ด์ผ€ ์„ค์น˜ํ•ด์ฃผ์…จ๋˜๊ฒŒ ์ƒ๊ฐ๋‚˜์„œ ๊ธฐ๋ƒฅ ์ด๊ฑธ๋ฃจ ํ–ˆ์Šด๋‹ค

brew install fastlane

 

2. fastlane ์„ค์ •

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๊ณณ์œผ๋กœ ์ด๋™ ํ›„! init์„ ํ•ด์ค๋‹ˆ๋‹ค.

fastlane init

๊ทธ๋Ÿผ ๊ท€์—ฌ์šด ๋กœ์ผ“์ด ๋‚˜์˜ต๋‹ˆ๋‹ค~

 

๋กœ์ผ“ ํ•˜๋‹ˆ๊นŒ ์ƒ๊ฐ๋‚œ๊ฑด๋ฐ ๋‹ค๋“ค ๊ฐ€์˜ค๊ฐค ๋ณด์…จ๋‚˜์š”.. ์˜ํ™”๊ด€์—์„œ ๋ˆˆ๋ฌผ์„ ํŽ‘ํŽ‘ ํ˜๋ ธ์Šด๋‹ค.. ๋กœ์ผ“... ใ… ใ… 

1234๋ฒˆ ์ค‘์— ์„ ํƒํ•˜๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋œจ๋Š”๋ฐ์š”.

์…‹์—…์„ ํ•ด์•ผํ•˜๋‹ˆ 4๋กœ ํ•ด๋ด…๋‹ˆ๋‹ค

 

๊ทธ๋Ÿผ ์ž ๊น์˜ ๋กœ๋”ฉ ํ›„ ๋์ด ๋‚˜๋Š”๋ฐ์š”?

 

์ฐธ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค์š”?

์›๋ž˜ ๋‹ค๋ฅธ ํฌ์ŠคํŒ…๋“ค ๋ณด๋ฉด ๋ง‰ AppleID ์ž…๋ ฅํ•˜๋ผ๋А๋‹ˆ App์•”ํ˜ธ ์ž…๋ ฅํ•˜๋ผ๋А๋‹ˆ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋งŽ์€๋ฐ์š”?

์ „ ์•„๋ฌด ์š”๊ตฌ ์—†์ด ๋ฐ”๋กœ ์„ค์น˜ํ•ด์คฌ์–ด์š”?

์™œ์ฃ ?

 

 

์…‹์—…์ด ๋๋‚˜๋ฉด ์ด๋ฅด์ผ€ 4๊ฐœ์˜ ํŒŒ์ผ์ด ์ƒ๊น๋‹ˆ๋‹ค.

  • Genfile, Genfile.lock: Fastlane์˜ ๋ฒ„์ „ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ
  • fastlane ํด๋” > Appfile, Fastfile: ์•ฑ ํ”„๋กœ์ ํŠธ/์• ํ”Œ๊ณ„์ •/lane ๋ช…๋ น์–ด ๋“ฑ์ด ๋“ค์–ด์žˆ๋‹ค.

์œ„ 4๊ฐœ์˜ ํŒŒ์ผ์€ ํŒ€์›๊ณผ ๊ณต์œ ํ•˜๋Š” ๊ฒŒ ๋‚ซ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค์š”? ๊ทธ๋Ÿผ gitignore์— ์จ์„œ๋Š” ์•ˆ๋˜๊ฒ ๊ตฐ์š”

 

3. Appstore ์ธ์ฆ

์•ฑ์Šคํ† ์–ด ์ธ์ฆ์„ ํ•ด์•ผ ์ž๋™์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒ ์ ธ

๊ทธ๋Ÿฌ๋ฉด ์ผ๋‹จ Signing์„ ํ•ด์•ผํ•˜๋Š”๋ฐ์š”, 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

1) Match: git์— ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ , ์ด๋ฅผ Signing

2) Cert, Sigh: ๋กœ์ปฌ์—์„œ ํ‚ค๋“ค์„ ์ €์žฅํ•˜๊ณ  ์žˆ๊ณ , ์ด๊ฒƒ์œผ๋กœ Signing

3) Manual: Apple Developer Protal์—์„œ .p12, .cer, .mobileprovision์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

 

์ด ์„ธ ๊ฐ€์ง€ ์ค‘์— ๋ญ˜ ์“ธ ์ง€ ์ •๋ง ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋Š”๋ฐ์š”...

์ผ๋‹จ ์ „ ํ˜‘์—… ์ค‘์ด๋‹ˆ ๋กœ์ปฌ์„ ์“ฐ๋Š” 2๋ฐฉ๋ฒ•์€ ๊ฑด๋„ˆ๋›ฐ๊ณ , 1๊ณผ 3์ค‘์— ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€์š”

์ €ํฌ iOS ํŒ€์›์ด ๋‘ ๋ช…๋ฐ–์— ์—†๋Š” ์ƒํ™ฉ์ด๋ผ 3์„ ์จ๋„ ๋˜์ง€ ์•Š์„๊นŒ ํ–ˆ๋‹ค๊ฐ€,... ๊ทธ๋ƒฅ 1์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค

๊นƒ์—๋‹ค๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒŒ ๋‹ค๋ฅธ ํŒ€์›ํ•œํ…Œ๋„ ๋” ๋‚˜์„ ๊ฑฐ ๊ฐ™์•„์„œ ? ๊ทผ๋ฐ ๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” ๋กœ์ปฌ์—์„œ ํŒŒ์ผ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ๋“ค์ด ๊ฝค ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐํ‘

 

Match๋กœ ๊ฐ‘์‹œ๋‹ค~

 

3. Github repo ์ƒ์„ฑ

Match ๋ฐฉ์‹์œผ๋กœ ๊ฐ„๋‹ค๋ฉด, ๊นƒํ—™์—๋‹ค๊ฐ€ ํ‚ค ๋“ค์„ ๋„ฃ์–ด์ค˜์•ผ๊ฒ ์ฃ !

private์œผ๋กœ ๋ ˆํฌ๋ฅผ ํ•˜๋‚˜ ํŒ๋‹ˆ๋‹ค.

 

 

4. Certificate์™€ provisioning profile ์ƒ์„ฑ ํ›„, ๊นƒ์— ์˜ฌ๋ฆฌ๊ธฐ

์•ž์„œ ์ƒ์„ฑํ–ˆ๋˜ FastlaneMatch ๋ ˆํฌ๋ฅผ clone ํ›„, ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ๋ฐ”๋ณด๋ผ์„œ ์ด ๋งˆ์ € ๊ตฌ๊ธ€๋งํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ํˆฌ์ฒ™ํ•ฉ๋‹ˆ๋‹ค. 

git clone https://github.com/PomeTeam/FastlaneMatch.git

 

๊ทผ๋ฐ ์ด๋Ÿฐ ์ฐฝ์ด ๋œจ๋Š”๋ฐ์š”? ์•ˆ ๊ทธ๋žฌ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ.. ์–ด๋А ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์ด๋Ÿฌ๋„ค์šฉ.. ํฌํ•žํ•œ์™ธ...

 

์–ด์จ‹๋“ ! match๋ฅผ ์“ฐ๊ฒ ๋‹ค๊ณ  ํ–ˆ์œผ๋‹ˆ๊นŒ init์„ ํ•ด์ค๋‹ˆ๋‹ค.

fastlane match init

์—ญ์‹œ๋‚˜ ๋œจ๋Š” ๊ท€์—ฌ์šด ๋กœ์ผ“

1๋กœ ํ•ด์ค๋‹ˆ๋‹ค. ๊นƒ์„ ์“ฐ๋‹ˆ๊นŒ์š”. ๊ทผ๋ฐ 4๋Š” ์–ธ์ œ ์ƒ๊ธด๊ฑธ๊นŒ?

 

 

๊นƒ url์„ ๋„ฃ์–ด์ฃผ๋ฉด? Matchfile์ด ์ƒ์„ฑ๋๋‹ค๊ณ  ๋œน๋‹ˆ๋‹ค~~!!!

 

Matchfile ์ˆ˜์ •

๊ทธ๋Ÿผ ์ด์ œ Matchfile์„ ์ˆ˜์ •ํ•ด์ค˜์•ผ ์ธ์ง€์ƒ์ •์ด๊ฒ ์ฃ 

๋‹ค๋“ค ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ•˜์‹œ๋Š” ์ง€ ์•„์‹œ์ ธ? (vi ๋ช…๋ น์–ด๋กœ ์—ด๊ธฐ > i ๋ˆŒ๋Ÿฌ ํŽธ์ง‘ > esc :wq! ๋กœ ์™„๋ฃŒ)

์—ฌ๊ธฐ์„œ ์ œ๊ฐ€ ์™œ Match๋ฅผ ์ผ๋Š” ์ง€ ๊ฐ‘์ž๊ธฐ ๊ธฐ์–ต์ด ๋‚ฌ์Šต๋‹ˆ๋‹ค.

๋ณด์‹œ๋ฉด ๋ฉ€ํ‹ฐ ํƒ€๊ฒŸ์„ ์“ธ ์ˆ˜ ๊ฐ€ ์žˆ๊ฑฐ๋“ ์š”? (ํ•˜์ง€๋งŒ ํฌ๋ฏธ์—์„œ๋Š” ์“ฐ์ง€ ์•Š์Œใ…Ž)

๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ์ด์ „ ํ”Œ์ ์—์„œ ์ผ๋˜ ๊ธฐ์–ต์ด ๋‚ฉ๋‹ˆ๋‹ค. Fastfile์—์„œ๋„ ๋ฉ€ํ‹ฐ ํƒ€๊ฒŸ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋งŒ ๊ท€์ฐฎ์œผ๋‹ˆ๊นŒ์š” (?)

 

 

๊ทธ ๋‹ค์Œ, ์ด์ „์— ๋งŒ๋“ค์–ด๋†“์€ certificate๋“ค์„ ์ œ๊ฑฐํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์จ์ค๋‹ˆ๋‹ค.

// ๊ฐœ๋ฐœ์šฉ ์ธ์ฆ์„œ ์ œ๊ฑฐ
fastlane match nuke development
// ๋ฐฐํฌ์šฉ ์ธ์ฆ์„œ ์ œ๊ฑฐ
fastlane match nuke distribution

์ œ๊ฑฐํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๊ณ„์†ํ•ด์„œ ์Œ“์ธ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

๊ฐ‘์ž๊ธฐ ์ด๊ฒŒ ๋–ด๋„ค์š”? 

์ด๊ฒŒ ๋ญ๋”๋ผ.. ๋‹ค๋ฅธ ์ปด์—์„œ๋„ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ๋น„๋ฒˆ ์„ค์ •ํ•˜๋Š” ๊ฑฐ์˜€๋‚˜ ์•”ํŠผ ๊ทธ๋žฌ๋˜ ๊ฑฐ ๊ฐ™์€๋ฐ ๊ฐ‘์ž๊ธฐ ์ด๋ฒˆ ํ”Œ์ ์—์„œ๋Š” ์ด๊ฒŒ ๋œจ๋„ค์š”

 

 

์•”ํŠผ ๊ณง์ด์–ด certificate์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

fastlane match appstore
fastlane match development

 

์š”๊ตฌํ•˜๋Š”๋ฐ๋กœ ์• ํ”Œ ์•„์ด๋”” ์“ฐ๊ณ .. ๋น„๋ฒˆ ์“ฐ๊ณ ... ๋ฒˆ๋“ค์•„์ด๋”” ์“ฐ๊ณ ... ์–ด์ฐŒ์ €์ฐŒ ํ•˜๋‹ค๋ณด๋ฉด ์ €๋ ‡๊ฒŒ ์—…๋กœ๋“œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

5. Appfile ์ˆ˜์ •

์ œ๊ฐ€ ์•ฑํŒŒ์ผ ์ˆ˜์ •์„ ๊นœ๋นกํ–ˆ์Šต๋‹ˆ๋‹ค. ใ…Ž Matchfile๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

6. Fastfile ์ˆ˜์ •

๋‘๋‘ฅ ๋Œ€๋ง์˜ Fastfile์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์„ค์ •ํ•ด์ค€ ๊ฒƒ์ด ๊ณง ๋ฐฐํฌํ™”์˜ ์‹œ์ž‘์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”

 

ํ•˜์ง€๋งŒ ๊ทธ ์ „์—! ์˜ค๋ฅ˜์˜ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด API KEY๋ฅผ ๋ฏธ๋ฆฌ ๋ฐœ๊ธ‰๋ฐ›์•„ ๋†“์์‹œ๋‹ค.

์ด๊ฒƒ๋•œ์— ์—„์ฒญ ์‚ฝ์งˆํ–ˆ๋˜ ๊ธฐ์–ต์ด ๋‚˜๋„ค์š”

์• ํ”Œ ๋””๋ฒจ๋กœํผ ํŽ˜์ด์ง€ > ์•ฑ > ์‚ฌ์šฉ์ž ๋ฐ ์•ก์„ธ์Šค > ํ‚ค > API KEY ๋ฐœ๊ธ‰ ํ›„, p8ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ ํ‚ค ID์™€ IssuerID๋„ ์–ด๋”˜๊ฐ€์— ์ ์–ด๋†“์œผ๋ฉด ์ข‹๊ฒ ๋„ค์š”.

 

Fastfile ์ฝ”๋“œ ํˆฌ์ฒ™

default_platform(:ios)

  desc "build app and upload to testflight"
  lane :beta do
    match(type: "appstore")
    clear_derived_data
    increment_build_number(
        build_number: latest_testflight_build_number + 1
    )
    gym(
     clean: true,
     export_method: "app-store"
    )
    upload_to_testflight(
      api_key_path: "fastlane/key.json",
      distribute_external: true,
      groups: ["PomeTesterGroup"],
      changelog: "- ์ˆ˜์ถœ ๊ทœ์ • ๋ฌธ์„œ ์ถ”๊ฐ€
                  - fastlane ์—์„œ ํ…Œ์ŠคํŠธ ์„ธ๋ถ€์‚ฌํ•ญ ์ž‘์„ฑ"
     )
    slack(
      message: "๐ŸŒ Testflight ๋ฐฐํฌ ์„ฑ๊ณต",
      slack_url: "https://hooks.slack.com/services/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"
    )
end

platform :ios do

  error do |lane, exception, options|
    slack(
      message: "โŒ ์—๋Ÿฌ ๋ฐœ์ƒ : #{exception}",
      success: false,
      slack_url: "https://hooks.slack.com/services/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"
)
  end
end

slack ์›นํ›… url ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ์Šฌ๋ž™์œผ๋กœ ์•Œ๋žŒ์ด ๊ฐ‘๋‹ˆ๋‹ค. ํ•˜๋Š” ๋ฒ•์„ ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด ๊ตฌ๊ธ€๋งใ„ฑใ„ฑ ๊ฐ„๋‹จํ•ด์—ฌ

 

 

์ด๋•Œ ์ž ๊น~!

key.json ํŒŒ์ผ

upload_to_testflight ์—์„œ api_key_path์—์„œ ์“ฐ์ด๋Š” key.json ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.

์•ž์„œ ์• ํ”Œ ๋””๋ฒจ๋กœํผ ํŽ˜์ด์ง€์—์„œ ์ ์–ด๋†จ๋˜ ํ‚ค๋“ค์„ ์—ด์‹ฌํžˆ ! ์ ์Šต๋‹ˆ๋‹ค.

{
  "key_id": "(key ID)",
  "issuer_id": "(Issuer ID)",
  "key": "-----BEGIN PRIVATE KEY-----\n(key(.p8) ๊ฐ’ ๋ณต์‚ฌ)\n-----END PRIVATE KEY-----",
  "duration": 1200,
  "in_house": false
}

๋‹ค๋งŒ ์ด๋ ‡๊ฒŒ๋งŒ ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ฃ  ... 

p8 ํ‚ค๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด, ์ค„๋ฐ”๊ฟˆ (\n)์ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(key(.p8) ๊ฐ’ ๋ณต์‚ฌ) ๋ถ€๋ถ„์—์„œ ์ค„๋ฐ”๊ฟˆ ๋ถ€๋ถ„์„ \n์œผ๋กœ ๋ฐ”๊ฟ”์ค˜์„œ ๋„ฃ์–ด์ค˜์•ผ ์˜ค๋ฅ˜๊ฐ€ ์•ˆ ๋‚ฉ๋‹ˆ๋‹ค.

 

ํ•˜.. ๋ณต์žกํ•˜๋„ค ..

 

 

Testflight ์—…๋กœ๋“œ

fastlane beta

์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฐจ๋ก€์ฐจ๋ก€ ์ž…๋ ฅํ•˜๋‹ค๋ณด๋ฉด ์–ด๋А์ƒˆ ํ…Œํ”Œ์— ์˜ฌ๋ผ์™€์žˆ๋Š” ์•ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

(10๋ถ„ ์ •๋„ ๊ฑธ๋ฆผใ…Žใ…Žใ…Ž )

์™„๋ฃŒ ๋ฌธ๊ตฌ๊ฐ€ ๋–ด๋‹ค.
์›นํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•ด๋ณด๋‹ˆ ์ž˜ ์˜ฌ๋ผ๊ฐ”๋‹ค

 

ํšŒ๊ณ 

๋ฐฐ๋ณด๋‹ค ๋ฐฐ๊ผฝ์ด ๋” ํฐ ๋А๋‚Œ์ž…๋‹ˆ๋‹ค. ^^

๊ทธ๋ ‡์ง€๋งŒ ์ข‹์€ ๊ฒฝํ—˜์ด์—ˆ์–ด์š”. ์ถ”ํ›„ ๊นƒํ—™ ์•ก์…˜๊ณผ ์ ‘๋ชฉ์‹œํ‚จ๋‹ค๋ฉด, ๋”๋”์šฑ ํŽธ๋ฆฌํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฐํฌ ์ž๋™ํ™”๊ฐ€ ์ด๋ค„์ง€๋ฆฌ๋ผ ๋ฏฟ์Šต๋‹ˆ๋‹ค.

 

 

๊ณต์‹๋ฌธ์„œ ์ฐธ๊ณ 

https://docs.fastlane.tools/actions/upload_to_testflight/

 

upload_to_testflight - 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/fastlane/actions/upload_to_testflight.rb --> upload_to_testflight Upl

docs.fastlane.tools

๊ฑฐ์˜ ๋ณต๋ถ™ ์ˆ˜์ค€์œผ๋กœ ์ฐธ๊ณ ํ–ˆ๋˜ ๋งํฌ ํˆฌ์ฒ™.

์ •๋ง ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ๋‹ค.

https://hongz-developer.tistory.com/197?category=831681 

 

Fastlane Match๋กœ Signing ํ•˜๊ธฐ(feat. iOS)

๋ชฉ์ฐจ Git private repo ์ƒ์„ฑ certificate์™€ provisioning profile ์ƒ์„ฑ ํ›„ Git์— ์˜ฌ๋ฆฌ๊ธฐ ๋ฐฐํฌ ์ž๋™ํ™”ํ•  ํ”„๋กœ์ ํŠธ๋กœ ๋Œ์•„๊ฐ€์„œ Fastfile ์ˆ˜์ • ์ƒˆ๋กœ ์˜จ ํŒ€์› ์‹œ์ : Match๋ฅผ ์ด์šฉํ•ด ๋ฐฐํฌ ์ž๋™ํ™” ํ•˜๊ธฐ ์ œ๊ฐ€ ์›๋ž˜ ์ˆ˜๋™๋ฐฉ๋ฒ•

hongz-developer.tistory.com

https://gyuios.tistory.com/241

 

iOS) ์•ฑ ์ž๋™ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ Fastlane ์„ค์ •

๋‚ด์šฉ TestFlight ์™€ ๋ฆด๋ฆฌ์ฆˆ ์•ฑ ์ž๋™ ๋ฐฐํฌ ์œ„ํ•œ Fastlane ์„ค์ • ๋ฐ ๊ธฐํƒ€ ์„ค์ • info.plist ์—์„œ ๋ฒ„์ „๊ณผ ๋นŒ๋“œ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ์ž‘์—… build scheme ์— ๋”ฐ๋ฅธ ์ž๋™ ๋ฐฐํฌ ์ž‘์—… archive ํ›„, app store connect ์— ์—…๋กœ๋“œ TestFlight ๋ฐฐํฌ Ap

gyuios.tistory.com