Skip to content

๐Ÿ”น ๋นŒ๋“œ

๐Ÿ—๏ธ Capgo iOS/Android ๋นŒ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜์„ธ์š”.

๐Ÿš€ Init

๐Ÿš€ Init

Alias: onboarding

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build init

iOS ๋นŒ๋“œ ์ธ์ฆ ์ •๋ณด๋ฅผ ์ƒํ˜ธ ์ž‘์šฉ์ ์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š” (์ธ์ฆ์„œ ๋ฐ ํ”„๋กœํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค). macOS์—์„œ App Store Connect API ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”น Request

๐Ÿ”น Request
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build request

Capgo Cloud์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๋นŒ๋“œ๋ฅผ ์š”์ฒญํ•˜์„ธ์š”. ์ด ๋ช…๋ น์€ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์••์ถ•ํ•˜๊ณ  Capgo์— ์—…๋กœ๋“œํ•˜์—ฌ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ๋Š” ์ง์ ‘ ์•ฑ ์Šคํ† ์–ด๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๐Ÿ”’ ๋ณด์•ˆ: Capgo ์„œ๋ฒ„์— ์ธ์ฆ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์™„๋ฃŒ ํ›„ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ถœ๋ ฅ์€ ์„ ํƒ์ ์œผ๋กœ ์‹œ๊ฐ„ ์ œํ•œ๋œ ๋‹ค์šด๋กœ๋“œ ๋งํฌ๋กœ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“‹ ํ•„์ˆ˜ ์กฐ๊ฑด: ๋จผ์ € ์ธ์ฆ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์„ธ์š”: npx @capgo/cli build credentials save --appId <app-id> --platform <ios|android>

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build request com.example.app --platform ios --path .

์˜ต์…˜:

ParamType์„ค๋ช…
โ€”pathstringํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ๋กœ (๊ธฐ๋ณธ๊ฐ’: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ)
โ€”platformstring๋นŒ๋“œ ๋Œ€์ƒ ํ”Œ๋žซํผ: ios ๋˜๋Š” android (ํ•„์ˆ˜)
โ€”build-modestring๋นŒ๋“œ ๋ชจ๋“œ: ๋””๋ฒ„๊ทธ ๋˜๋Š” ๋ฆด๋ฆฌ์ฆˆ (๊ธฐ๋ณธ: ๋ฆด๋ฆฌ์ฆˆ)
__CAPGO_KEEP_0__stringiOS: Base64๋กœ ์ธ์ฝ”๋”ฉ๋œ .p12 ์ธ์ฆ์„œ
__CAPGO_KEEP_0__stringiOS: ์ธ์ฆ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ (์ธ์ฆ์„œ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์—†์œผ๋ฉด ์„ ํƒ ์‚ฌํ•ญ)
iOS: ์•ฑ ์Šคํ† ์–ด ์—ฐ๊ฒฐ __CAPGO_KEEP_0__ ํ‚ค ๋Œ€์ฒดstringiOS: Apple ID email for app-specific password uploads (alternative to App Store Connect API key)
iOS: ์•ฑ ์Šคํ† ์–ด ์—ฐ๊ฒฐ ์•ฑ ์•„์ด๋”” (ํ•„์ˆ˜: โ€”apple-id์™€ โ€”apple-app-specific-password์™€ ํ•จ๊ป˜)stringiOS: ์•ฑ ์Šคํ† ์–ด ์—ฐ๊ฒฐ ์•ฑ ํ‚ค ์•„์ด๋””
__CAPGO_KEEP_0__string__CAPGO_KEEP_0__
__CAPGO_KEEP_0__stringiOS: ์• ํ”Œ ์•ฑ ์Šคํ† ์–ด ์—ฐ๊ฒฐ(App Store Connect) API ํ‚ค ID(Key ID)
โ€”apple-issuer-idstringiOS: ์• ํ”Œ ์•ฑ ์Šคํ† ์–ด ์ปค๋„ฅํŠธ ๋ฐœ๊ธ‰์ž ID
โ€”์‚ฌ์šฉ์ž ์ธ์ฆ์„œ ์ฝ˜ํ…์ธ โ€”stringiOS: Base64-์ธ์ฝ”๋”ฉ App Store Connect API ํ‚ค (.p8)
์• ํ”Œ ์Šคํ† ์–ด ์—ฐ๊ฒฐ ํŒ€ IDstringiOS: ์• ํ”Œ ์Šคํ† ์–ด ์ปค๋„ฅํŠธ ํŒ€ ID
iOS ์Šคํ‚ค๋งˆstringiOS: Xcode scheme์œผ๋กœ ๋นŒ๋“œ (๊ธฐ๋ณธ: App)
iOS ๋Œ€์ƒstringiOS: Xcode ๋Œ€์ƒ์œผ๋กœ ๋นŒ๋“œ ์„ค์ • ์ฝ๊ธฐ (๊ธฐ๋ณธ๊ฐ’: ์Šคํ‚ค๋งˆ์™€ ๋™์ผ)
iOS ๋ฐฐํฌstringiOS: ๋ฐฐํฌ ๋ชจ๋“œ
โ€”ios-provisioning-profilestringiOS: Provisioning profile ๊ฒฝ๋กœ ๋˜๋Š” bundleId=path mapping (๋ฐ˜๋ณต ๊ฐ€๋Šฅ)
โ€”android-keystore-filestringAndroid: Base64-encoded ํ‚ค ์Šคํ† ์–ด ํŒŒ์ผ
โ€”keystore-key-aliasstringAndroid: ํ‚ค ์Šคํ† ์–ด ํ‚ค ๋ณ„์นญ
โ€”keystore-key-passwordstringAndroid: ํ‚ค ์Šคํ† ์–ด ํ‚ค ๋น„๋ฐ€๋ฒˆํ˜ธ
โ€”keystore-store-passwordstringAndroid: ํ‚ค ์Šคํ† ์–ด ์ €์žฅ์†Œ ๋น„๋ฐ€๋ฒˆํ˜ธ
โ€”play-config-jsonstring์•ˆ๋“œ๋กœ์ด๋“œ: Base64-encoded Google Play ์„œ๋น„์Šค ๊ณ„์ • JSON
โ€”์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋ž˜๋ฒ„string์•ˆ๋“œ๋กœ์ด๋“œ: ์ œํ’ˆ ํ”Œ๋ž˜๋ฒ„๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ (์˜ˆ: ํ”„๋กœ๋•์…˜). ํ”„๋กœ์ ํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ํ”Œ๋ž˜๋ฒ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
โ€”ํ”Œ๋ ˆ์ด์Šคํ† ์–ด ์—…๋กœ๋“œ ์ƒ๋žตboolean์ด ๋นŒ๋“œ์— ๋Œ€ํ•œ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด ์—…๋กœ๋“œ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค (์ €์žฅ๋œ ํ”Œ๋ ˆ์ด ๊ตฌ์„ฑ null๋กœ ์„ค์ •). โ€”output-upload์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
โ€”output-uploadboolean์ด ๋นŒ๋“œ์— ๋Œ€ํ•œ ์ถœ๋ ฅ ์—…๋กœ๋“œ ๋™์ž‘์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ฉ๋‹ˆ๋‹ค (ํ™œ์„ฑํ™”). ์šฐ์„ ์ˆœ์œ„: CLI > ํ™˜๊ฒฝ > ์ €์žฅ๋œ ์ž๊ฒฉ์ฆ๋ช…
โ€”no-output-uploadboolean์ด ๋นŒ๋“œ์— ๋Œ€ํ•œ ์ถœ๋ ฅ ์—…๋กœ๋“œ ๋™์ž‘์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ฉ๋‹ˆ๋‹ค (๋น„ํ™œ์„ฑํ™”). ์šฐ์„ ์ˆœ์œ„: CLI > ํ™˜๊ฒฝ > ์ €์žฅ๋œ ์ž๊ฒฉ์ฆ๋ช…
โ€”์ถœ๋ ฅ ๋ณด์กดstring์ด ๋นŒ๋“œ์— ๋Œ€ํ•œ ์ถœ๋ ฅ ๋งํฌ TTL์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ฉ๋‹ˆ๋‹ค (1์‹œ๊ฐ„์—์„œ 7์ผ). ์˜ˆ์‹œ: 1์‹œ๊ฐ„, 6์‹œ๊ฐ„, 2์ผ. ์šฐ์„ ์ˆœ์œ„: CLI > ํ™˜๊ฒฝ > ์ €์žฅ๋œ ์ž๊ฒฉ์ฆ๋ช…
โ€”๋นŒ๋“œ ๋ฒˆํ˜ธ ์—…๋ฐ์ดํŠธ๋ฅผ ์ƒ๋žตboolean์ž๋™ ๋นŒ๋“œ ๋ฒˆํ˜ธ/๋ฒ„์ „ code ์ฆ๊ฐ€๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— ์ด๋ฏธ ์žˆ๋Š” ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€”no-skip-build-number-bumpboolean์ด ๋นŒ๋“œ์—๋งŒ ์ž๋™ ๋นŒ๋“œ ๋ฒˆํ˜ธ ์ฆ๊ฐ€๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅ๋œ ์ž๊ฒฉ์ฆ๋ช…์„ ์žฌํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
-a,stringAPI ๊ณ„์ •์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค
โ€”supa-hoststringCustom Supabase host URL (for self-hosting or Capgo development)
โ€”supa-anonstring์ž์ฒด ํ˜ธ์ŠคํŒ…์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ปค์Šคํ…€ Supabase anon ํ‚ค
โ€”verboseboolean์„ธ๋ถ€ ๋กœ๊น…๊ณผ ํ•จ๊ป˜ ์ž์„ธํ•œ ์ถœ๋ ฅ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build credentials

์ปดํ“จํ„ฐ์— ์ €์žฅ๋œ ๋นŒ๋“œ ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜์„ธ์š”. ๐Ÿ”’ ๋ณด์•ˆ:

  • ์ธ์ฆ ์ •๋ณด๊ฐ€ ~/.capgo-credentials/credentials.json (์ „์—ญ) ๋˜๋Š” .capgo-credentials.json (์ง€์—ญ) ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ๋นŒ๋“œ ์‹œ Capgo๋กœ ์ „์†ก๋˜์ง€๋งŒ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Capgo์—์„œ ์ฆ‰์‹œ ์‚ญ์ œ
  • ๋นŒ๋“œ ์ถœ๋ ฅ๋ฌผ์€ ์˜ต์…˜์œผ๋กœ ์‹œ๊ฐ„ ์ œํ•œ๋œ ๋‹ค์šด๋กœ๋“œ ๋งํฌ๋กœ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ“š ๋ฌธ์„œ: https://capgo.app/docs/builder/ios/ https://__CAPGO_KEEP_0__.app/docs/builder/ios/ https://capgo.app/docs/builder/android/

__CAPGO_KEEP_0__๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด __CAPGO_KEEP_0__ __CAPGO_KEEP_0__์™€ ์—ฐ๊ฒฐํ•˜์„ธ์š”. Capgo CI/CD์˜ ์ œํ’ˆ ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ Capgo CI/CD๋ฅผ ์—ฐ๊ฒฐํ•˜์„ธ์š”. Capgo Native Builds์˜ ์ œํ’ˆ ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ Capgo Native Builds๋ฅผ ์—ฐ๊ฒฐํ•˜์„ธ์š”. Capgo Integrations์˜ ์ œํ’ˆ ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ Capgo Integrations๋ฅผ ์—ฐ๊ฒฐํ•˜์„ธ์š”. for the product workflow in Capgo Native Builds, Capgo Integrations Capgo CI/CD๋ฅผ ํ†ตํ•ด ๊ณ„์† ์ง„ํ–‰ํ•˜์„ธ์š”. __CAPGO_KEEP_0__๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด __CAPGO_KEEP_0__ CI/CD์˜ ์ œํ’ˆ ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ __CAPGO_KEEP_0__ CI/CD๋ฅผ ์—ฐ๊ฒฐํ•˜์„ธ์š”. GitHub ์•ก์…˜ ํ†ตํ•ฉ GitHub ์•ก์…˜ ํ†ตํ•ฉ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์œ„ํ•ด.