Skip to content

๐Ÿ”น ๋นŒ๋“œ

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

๋นŒ๋“œ ์ ‘๊ทผ ๋ฐ ์ถœ๋ ฅ

์ œ๋ชฉ: ๋นŒ๋“œ ์ ‘๊ทผ ๋ฐ ์ถœ๋ ฅ

๋„ค์ดํ‹ฐ๋ธŒ ํด๋ผ์šฐ๋“œ ๋นŒ๋“œ ์š”์ฒญ์€ ํ˜„์žฌ ์ œํ•œ๋œ ๋ฒ ํƒ€ ์ƒํƒœ์ด๋ฉฐ ์ ‘๊ทผ์ด ์ œํ•œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ž๊ฒฉ ์ฆ๋ช…์€ Capgo ์„œ๋ฒ„์— ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค: ๋นŒ๋“œ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ถœ๋ ฅ์€ ์„ ํƒ์ ์œผ๋กœ ์‹œ๊ฐ„ ์ œํ•œ๋œ ๋‹ค์šด๋กœ๋“œ ๋งํฌ์™€ ํ•จ๊ป˜ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๊ฒฉ ์ฆ๋ช…์„ ์ €์žฅํ•˜์„ธ์š”

์ œ๋ชฉ: ์ž๊ฒฉ ์ฆ๋ช…์„ ์ €์žฅํ•˜์„ธ์š”
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli build credentials save --appId YOUR_APP_ID --platform ios
npx @capgo/cli build credentials save --appId YOUR_APP_ID --platform android

CI์—์„œ ์ถœ๋ ฅ URL ์บก์ฒ˜

CI์—์„œ ์ถœ๋ ฅ URL ์บก์ฒ˜

persist --output-record ๋‹ค์šด๋กœ๋“œ URL๊ณผ QR ์ฝ”๋“œ๋ฅผ code๋กœ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉ build last-output ์ฝ๊ธฐ

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli build request APP_ID --platform android --output-upload --output-record /tmp/build.json
npx @capgo/cli build last-output --path /tmp/build.json --field outputUrl

๐Ÿ”น ํ•„์š”ํ•œ

ํ•„์š”ํ•œ
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build needed

๐Ÿงญ native ๋นŒ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋ฉด "yes"๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  code 1๋กœ ์ข…๋ฃŒ; ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด "no"๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  code 0์œผ๋กœ ์ข…๋ฃŒ. ๋ช…๋ น ์‹คํŒจ๋Š” code 2๋กœ ์ข…๋ฃŒ.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build needed com.example.app --channel production --verbose

์˜ต์…˜:

ParamType์„ค๋ช…
-astringAPI ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์ •์— ์—ฐ๊ฒฐ
-cstringCapacitor ์—…๋ฐ์ดํ„ฐ์˜ ๊ธฐ๋ณธ ์ฑ„๋„ ๋˜๋Š” ๊ณต๊ณต ๊ธฐ๋ณธ ์ฑ„๋„
โ€”package-jsonstring๋ชจ๋…ธ๋ ˆํฌ์˜ package.json ํŒŒ์ผ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
โ€”node-modulesstring๋ชจ๋…ธ๋ ˆํฌ์˜ node_modules ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
โ€”verboseboolean์„ธ๋ถ€ ๋กœ๊น…๊ณผ ํ•จ๊ป˜ ์ž์„ธํ•œ ์ถœ๋ ฅ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
โ€”supa-hoststringCustom Supabase host URL (for self-hosting or Capgo development)
โ€”supa-anonstring์ž์ฒด ํ˜ธ์ŠคํŒ…์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปค์Šคํ…€ Supabase anon ํ‚ค

๐Ÿš€ ์ดˆ๊ธฐํ™”

Section titled โ€œ ๐Ÿš€ Initโ€

Alias: onboarding

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

iOS: ์ธ์ฆ์„œ + ํ”„๋กœํŒŒ์ผ ์ž๋™ํ™”; Android: ํ‚ค์Šคํ† ์–ด + Google OAuth GCP ์„œ๋น„์Šค ๊ณ„์ • ๋ฐ Play Console ์ดˆ๋Œ€

Options:

ParamType์„ค๋ช…
-astringAPI ๊ณ„์ •์— ์—ฐ๊ฒฐํ•˜๋Š” ํ‚ค
-pstringํ”Œ๋žซํผ์„ ์„ ํƒํ•˜์„ธ์š” (ios ๋˜๋Š” android). ๋งŒ์•ฝ ํ•˜๋‚˜์˜ ๋„ค์ดํ‹ฐ๋ธŒ ํด๋”๋งŒ ์กด์žฌํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜์ง€๋งŒ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒๆ็คบํ•ฉ๋‹ˆ๋‹ค.
โ€”supa-hoststringCustom Supabase host URL (for self-hosting or Capgo development)
โ€”no-analyticsboolean์ด ๋นŒ๋“œ ์‹คํ–‰์—์„œ ๋นŒ๋“œ ์˜จ๋ณด๋”ฉ ๋ถ„์„ ๋ฐ ํ„ฐ๋ฏธ๋„ ์žฌ์ƒ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น ์š”์ฒญ

ํ„ฐ๋ฏธ๋„ ์ฐฝ
ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ
npx @capgo/cli@latest build request

Request a native build from Capgo Cloud. This command will zip your project directory and upload it to Capgo for building. The build will be processed and sent directly to app stores. Credentials are never stored on Capgo servers; they are deleted after the build. Save them before requesting a build:

ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ
npx @capgo/cli build credentials save --appId APP_ID --platform ios

์˜ˆ์‹œ:

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

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐํƒ€์ž…์„ค๋ช…
โ€”pathstringํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ๋กœ (๊ธฐ๋ณธ๊ฐ’: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ)
โ€”node-modulesstring๋ชจ๋…ธ๋ ˆํฌ์˜ node_modules ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
โ€”platformstringํ”Œ๋žซํผ: ios ๋˜๋Š” android (ํ•„์ˆ˜)
โ€”build-modestring๋นŒ๋“œ ๋ชจ๋“œ: debug ๋˜๋Š” release (๊ธฐ๋ณธ๊ฐ’: release)
โ€”build-certificate-base64stringiOS: Base64 ์ธ์ฝ”๋”ฉ๋œ .p12 ์ธ์ฆ์„œ
โ€”p12-passwordstringiOS: ์ธ์ฆ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ (์ธ์ฆ์„œ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์—†์œผ๋ฉด ์„ ํƒ ์‚ฌํ•ญ)
โ€”apple-idstringiOS: ์•ฑ ์Šคํ† ์–ด ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์ด๋ฉ”์ผ ์ฃผ์†Œ (App Store Connect API ํ‚ค ๋Œ€์ฒด)
โ€”apple-app-specific-passwordstringiOS: ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ ์—…๋กœ๋“œ๋ฅผ ์œ„ํ•œ ์•ฑ ์ŠคํŽ˜์‹œํ”ฝ ๋น„๋ฐ€๋ฒˆํ˜ธ (xxxx-xxxx-xxxx-xxxx)
โ€”apple-app-idstringiOS: ์ˆซ์ž App Store Connect ์•ฑ ID (โ€”apple-id ๋ฐ โ€”apple-app-specific-password์™€ ํ•จ๊ป˜ ํ•„์š”)
โ€”apple-key-idstringiOS: App Store Connect API ํ‚ค ID
โ€”apple-issuer-idstringiOS: App Store Connect ๋ฐœ๊ธ‰์ž ID
โ€”apple-key-contentstringiOS: Base64๋กœ ์ธ์ฝ”๋”ฉ๋œ App Store Connect API ํ‚ค (.p8)
โ€”app-store-connect-team-idstringiOS: App Store Connect ํŒ€ ID
โ€”ios-schemestringiOS: Xcode scheme์„ ๋นŒ๋“œํ•  ๋•Œ (๊ธฐ๋ณธ: App)
โ€”ios-targetstringiOS: Xcode target for reading build settings (default: same as scheme)
โ€”iOS ๋ฐฐํฌstringiOS: ๋ฐฐํฌ ๋ชจ๋“œ
โ€”iOS ๋ฐฐํฌ ํ”„๋กœํŒŒ์ผstringiOS: ๋ฐฐํฌ ํ”„๋กœํŒŒ์ผ ๊ฒฝ๋กœ ๋˜๋Š” bundleId=path mapping (repeatable)
โ€”์•ˆ๋“œ๋กœ์ด๋“œ ํ‚ค์Šคํ† ์–ด ํŒŒ์ผstring์•ˆ๋“œ๋กœ์ด๋“œ: Base64-encoded ํ‚ค์Šคํ† ์–ด ํŒŒ์ผ
โ€”ํ‚ค์Šคํ† ์–ด ํ‚ค ๋ณ„์นญstring์•ˆ๋“œ๋กœ์ด๋“œ: ํ‚ค์Šคํ† ์–ด ํ‚ค ๋ณ„์นญ
โ€”ํ‚ค์Šคํ† ์–ด ํ‚ค ๋น„๋ฐ€๋ฒˆํ˜ธstring์•ˆ๋“œ๋กœ์ด๋“œ: ํ‚ค์Šคํ† ์–ด ํ‚ค ๋น„๋ฐ€๋ฒˆํ˜ธ
โ€”ํ‚ค์Šคํ† ์–ด ์ €์žฅ์†Œ ๋น„๋ฐ€๋ฒˆํ˜ธstring์•ˆ๋“œ๋กœ์ด๋“œ: Keystore ์ €์žฅ์†Œ ๋น„๋ฐ€๋ฒˆํ˜ธ
โ€”play-config-jsonstring์•ˆ๋“œ๋กœ์ด๋“œ: Google Play ์„œ๋น„์Šค ๊ณ„์ • JSON์„ Base64๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฐ’
โ€”android-flavorstring์•ˆ๋“œ๋กœ์ด๋“œ: ๋นŒ๋“œํ•  ์ œํ’ˆ์˜ ๋ง›์ง‘ (์˜ˆ: ํ”„๋กœ๋•์…˜). ํ”„๋กœ์ ํŠธ์— ์—ฌ๋Ÿฌ ๋ง›์ง‘์ด ์žˆ๋‹ค๋ฉด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
โ€”android-trackstring์•ˆ๋“œ๋กœ์ด๋“œ: ์—…๋กœ๋“œํ•  Google Play ํŠธ๋ž™ (๋‚ด๋ถ€, ์•ŒํŒŒ, ๋ฒ ํƒ€, ํ”„๋กœ๋•์…˜). โ€”submit-to-store-review ์˜ต์…˜ ์—†์ด ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ ๋‚ด๋ถ€์ž…๋‹ˆ๋‹ค. โ€”submit-to-store-review ์˜ต์…˜๊ณผ ํŠธ๋ž™์„ ์„ค์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ ํ”„๋กœ๋•์…˜์ž…๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„: CLI > ํ™˜๊ฒฝ๋ณ€์ˆ˜ > ์ €์žฅ๋œ ์ธ์ฆ์ •๋ณด
โ€”android-release-statusstring์•ˆ๋“œ๋กœ์ด๋“œ: Google Play ๋ฆด๋ฆฌ์Šค ์ƒํƒœ (draft, completed, inProgress, halted). โ€”submit-to-store-review ์˜ต์…˜ ์—†์ด ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ draft์ž…๋‹ˆ๋‹ค. โ€”submit-to-store-review ์˜ต์…˜๊ณผ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ completed์ž…๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„: CLI > ํ™˜๊ฒฝ๋ณ€์ˆ˜ > ์ €์žฅ๋œ ์ธ์ฆ์ •๋ณด
โ€”in-app-update-prioritystring์•ˆ๋“œ๋กœ์ด๋“œ: Google Play ๋‚ด ์•ฑ ์—…๋ฐ์ดํŠธ ์šฐ์„ ์ˆœ์œ„ (0-5์˜ ์ •์ˆ˜; ๋” ๋†’์„์ˆ˜๋ก ๋” ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค). ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://developer.android.com/guide/playcore/in-app-updates. ์šฐ์„ ์ˆœ์œ„: CLI > env > ์ €์žฅ๋œ ์ธ์ฆ ์ •๋ณด
โ€”no-playstore-uploadboolean์ด ๋นŒ๋“œ์— ๋Œ€ํ•œ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด ์—…๋กœ๋“œ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค (์ €์žฅ๋œ ํ”Œ๋ ˆ์ด ๊ตฌ์„ฑ null๋กœ ์„ค์ •). โ€”output-upload์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
โ€”submit-to-store-reviewboolean์—…๋กœ๋“œ ํ›„ ์Šคํ† ์–ด ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ๊ฒ€ํ†  ์š”์ฒญ ๋Œ€์‹  draft/๋น„ํ™œ์„ฑํ™” ๋นŒ๋“œ๋กœ ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ๋•์…˜ ํŠธ๋ž™์— ์™„๋ฃŒ๋œ ๋ฆด๋ฆฌ์ฆˆ ์ƒํƒœ (โ€”android-track / PLAY_STORE_TRACK ๋ฐ โ€”android-release-status / PLAY_STORE_RELEASE_STATUS๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ) ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. iOS์—์„œ๋Š” ์ฒ˜๋ฆฌ๋œ ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ ๋นŒ๋“œ๋ฅผ ์•ฑ ์Šคํ† ์–ด ๊ฒ€ํ† ์— ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.
โ€”store-release-namestring์Šคํ† ์–ด ๋ฆด๋ฆฌ์ฆˆ ์ด๋ฆ„/๋ฒ„์ „ ๋ ˆ์ด๋ธ”. ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ์ด ๊ฐ’์„ Google Play์˜ ๋ฒ„์ „ ์ด๋ฆ„์œผ๋กœ ์ „์†กํ•˜๊ณ  iOS์—์„œ๋Š” App Store ๋ฒ„์ „์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์žฌ์‚ฌ์šฉํ•  ๋•Œ ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€”store-release-notesstring๊ธฐ๋ณธ ์Šคํ† ์–ด ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ. ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ์ด ๊ฐ’์„ ํ”Œ๋ ˆ์ด์˜ ๋ณ€๊ฒฝ ๋กœ๊ทธ๋กœ ์‚ฌ์šฉํ•˜๊ณ  iOS์—์„œ๋Š” App Store์˜ Whatโ€™s New ํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€”store-release-notes-localestring์ง€์—ญํ™”๋œ ์Šคํ† ์–ด ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ (๋ฐ˜๋ณต ๊ฐ€๋Šฅ), ์˜ˆ๋ฅผ ๋“ค์–ด โ€”store-release-notes-locale en-US=โ€œ๋ฒ„๊ทธ ์ˆ˜์ •โ€ โ€”store-release-notes-locale fr-FR=โ€œ์ˆ˜์ •โ€.
โ€”ios-testflight-groupsstringiOS: optional comma-separated TestFlight external group names or IDs for external beta distribution.
โ€”ios-์ž๋™ ๋ฐฐํฌbooleaniOS: ์• ํ”Œ ์Šน์ธ ํ›„ App Store ๋ฒ„์ „์„ ์ž๋™์œผ๋กœ ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ์ˆ˜๋™ ์ถœ์‹œ์ž…๋‹ˆ๋‹ค.
โ€”no-ios-์ž๋™ ๋ฐฐํฌbooleaniOS: ์• ํ”Œ ์Šน์ธ ํ›„ App Store ๋ฒ„์ „์„ ์ˆ˜๋™์œผ๋กœ ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค.
โ€”์ถœ๋ ฅ ์—…๋กœ๋“œboolean์ด ๋นŒ๋“œ๋งŒ์„ ์œ„ํ•œ ์ถœ๋ ฅ ์—…๋กœ๋“œ ๋™์ž‘์„ ๊ฐ•์ œ๋กœ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„: CLI > ํ™˜๊ฒฝ๋ณ€์ˆ˜ > ์ €์žฅ๋œ ์ธ์ฆ์„œ
โ€”์ถœ๋ ฅ ์—…๋กœ๋“œ ๋น„ํ™œ์„ฑํ™”boolean์ด ๋นŒ๋“œ๋งŒ์„ ์œ„ํ•œ ์ถœ๋ ฅ ์—…๋กœ๋“œ ๋™์ž‘์„ ๊ฐ•์ œ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„: CLI > ํ™˜๊ฒฝ๋ณ€์ˆ˜ > ์ €์žฅ๋œ ์ธ์ฆ์„œ
โ€”์ถœ๋ ฅ ๋ณด์กดstring์ด ๋นŒ๋“œ๋งŒ์„ ์œ„ํ•œ ์ถœ๋ ฅ ๋งํฌ TTL์„ ๊ฐ•์ œ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ: 1์‹œ๊ฐ„, 6์‹œ๊ฐ„, 2์ผ. ์šฐ์„ ์ˆœ์œ„: CLI > ํ™˜๊ฒฝ๋ณ€์ˆ˜ > ์ €์žฅ๋œ ์ธ์ฆ์„œ
โ€”์ถœ๋ ฅ ๊ธฐ๋กstring์„ฑ๊ณต์ ์ธ ๋นŒ๋“œ ํ›„, JSON ๋ ˆ์ฝ”๋“œ (jobId, status, outputUrl, qrCodeAscii, qrCodePngPath, finishedAt)๋ฅผ ๊ฒฝ๋กœ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. PNG QR code๋„ ๊ทธ ๊ฒฝ๋กœ ์˜†์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. .qr.png suffix. build last-output.
โ€”no-skip-build-number-bumpboolean์ด ๋นŒ๋“œ์— ๋Œ€ํ•ด ์ž๋™ ๋นŒ๋“œ ๋ฒˆํ˜ธ ์ฆ๊ฐ€๋ฅผ ์žฌ ํ™œ์„ฑํ™” ํ•˜๋ ค๋ฉด ์ €์žฅ๋œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์žฌ ์ •์˜ํ•˜์„ธ์š”.
โ€”skip-marketing-version-bumpboolean์•ฑ์ด ์ด๋ฏธ ์ถœ์‹œ๋œ ๊ฒฝ์šฐ ์ž๋™ ๋งˆ์ผ€ํŒ… ๋ฒ„์ „ (CFBundleShortVersionString / versionName) ์ฆ๊ฐ€๋ฅผ ์ƒ๋žตํ•˜์„ธ์š”.
โ€”sync-ios-versionbooleaniOS: package.json์˜ MARKETING_VERSION์„ Xcode์—์„œ syncํ•˜๊ธฐ ์ „์— ํ”„๋กœ์ ํŠธ๋ฅผ ์—…๋กœ๋“œํ•˜๊ธฐ ์ „์—.
โ€”ai-analyticsboolean๋นŒ๋“œ ์‹คํŒจ ์‹œ, Capgo AI๋กœ ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๊ณ  ์ง„๋‹จ์„ ์œ„ํ•ด ๋ถ„์„์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ดํ„ฐ๋ ‰ํ‹ฐ๋ธŒ ํ„ฐ๋ฏธ๋„์—์„œ ์ด ์˜ต์…˜์€ ์•ž์„œ์˜ ํ™•์ธ์„ ์ƒ๋žตํ•˜๊ณ  CI์—์„œ ์ž๋™ ์—…๋กœ๋“œ ๋ฐ ๋ถ„์„์„ stderr๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
โ€”no-prescanboolean์ž๋™ ์ „ ๋นŒ๋“œ ์Šค์บ”์„ ์ƒ๋žตํ•˜์„ธ์š”.
โ€”prescan-ignore-fatalboolean๋นŒ๋“œ ์ „์— ์Šค์บ”์„ ์‹คํ–‰ํ•˜์ง€๋งŒ ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š๋„๋ก ํ•˜์„ธ์š” (์˜ค๋ฅ˜๋งŒ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค)
โ€”prescan-skipstringํŠน์ • ์Šค์บ” ์ฒดํฌ๋ฅผ ์ƒ๋žตํ•˜์„ธ์š” (id, ๋ฐ˜๋ณต ๋˜๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„). ๋‹ค๋ฅธ ์ฒดํฌ๋Š” ์—ฌ์ „ํžˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
โ€”prescan-warnstringํŠน์ • ์Šค์บ” ์ฒดํฌ๋ฅผ ๊ฒฝ๊ณ ๋กœ ๋‚ฎ์ถ”์„ธ์š” (id, ๋ฐ˜๋ณต ๋˜๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„). ์ฒดํฌ๋Š” ์—ฌ์ „ํžˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
โ€”fail-on-warningsboolean๋นŒ๋“œ ์ „์— ์Šค์บ” ๊ฒฝ๊ณ ๋ฅผ ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌํ•˜์„ธ์š”
โ€”send-logs-to-supportbooleanCI/CD ๋นŒ๋“œ ์‹คํŒจ ์‹œ ์ž๋™์œผ๋กœ ๋นŒ๋“œ ๋กœ๊ทธ๋ฅผ Capgo ์ง€์›ํŒ€์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค (์ด๋ฉ”์ผ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). Capgo ์ง€์›ํŒ€์€ ์ด๋ฉ”์ผ๋กœ ์—ฐ๋ฝ์„ ์ทจํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. โ€”ai-analytics์™€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
โ€”send-logsbooleanโ€”send-logs-to-support์˜ alias์ž…๋‹ˆ๋‹ค (deprecated)
-astringAPI key to link to your account
โ€”supa-hoststringCustom Supabase host URL (for self-hosting or Capgo development)
โ€”supa-anonstringCustom Supabase anon key (for self-hosting)
โ€”verbosebooleanEnable verbose output with detailed logging

๐Ÿ”น Sync-ios-version

Sync-iOS ๋ฒ„์ „
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build sync-ios-version

iOS Xcode MARKETING_VERSION์„ package.json์—์„œ ๋™๊ธฐํ™”ํ•˜์„ธ์š”.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build sync-ios-version --path .

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐํƒ€์ž…์„ค๋ช…
โ€”pathstringํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ๋กœ (๊ธฐ๋ณธ: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ)
โ€”checkboolean์ฒดํฌ๋งŒ; MARKETING_VERSION์ด ๋™๊ธฐํ™”๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 0์ด ์•„๋‹Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น ๐Ÿ”น ํ”„๋กœ์ ํŠธ ์Šค์บ”

ํ”„๋กœ์ ํŠธ ์Šค์บ”
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build prescan

ํ”„๋กœ์ ํŠธ์™€ ์ €์žฅ๋œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์—…๋กœ๋“œํ•˜๊ธฐ ์ „์— cloud ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์Šค์บ”ํ•˜๊ณ  โ€” ์—…๋กœ๋“œํ•˜๊ธฐ ์ „์—. build request์ž๊ฒฉ ์ฆ๋ช…(๋งŒ๋ฃŒ, ์•”ํ˜ธ, ํ”„๋กœํ•„ Pairing), ํ”„๋กœ์ ํŠธ ์ƒํƒœ(cap sync, node_modules ๋ ˆ์ด์•„์›ƒ), ํ”Œ๋žซํผ ๊ตฌ์„ฑ ํ™•์ธ. ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ CI์—์„œ standalone๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ --skip / --warn ํ”„๋กœ์ ํŠธ ์Šค์บ”์€

์ „์ฒด ์ฒดํฌ ์นดํƒˆ๋กœ๊ทธ ๋ฐ

๊ฐœ๋ณ„ ๊ทœ์น™์— ๋Œ€ํ•ด์˜ต์…˜ :์„ค๋ช…
โ€”ํ”Œ๋žซํผstring๋ชฉํ‘œ ํ”Œ๋žซํผ: ios ๋˜๋Š” android (ํ•„์ˆ˜)
โ€”๊ฒฝ๋กœstringํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ๋กœ (๊ธฐ๋ณธ: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ)
-astringAPI ๊ณ„์ •์— ์—ฐ๊ฒฐํ•˜๋Š” ํ‚ค
โ€”์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋ž˜๋ฒ„string์•ˆ๋“œ๋กœ์ด๋“œ: ๋นŒ๋“œ์— ์‚ฌ์šฉํ•  ์ œํ’ˆ ํ”Œ๋ž˜๋ฒ„
โ€”iOS ๋ฐฐํฌstringiOS: ๋ฐฐํฌ ๋ชจ๋“œ๋ฅผ ๊ฒ€์ฆํ•  ๊ฒƒ
โ€”JSONboolean๊ธฐ๊ณ„๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” JSON ๋ณด๊ณ ์„œ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
__CAPGO_KEEP_0__boolean๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ๊ฒฌ๋œ ๊ฒฝ์šฐ 0์ด ์•„๋‹Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค (CI)
__CAPGO_KEEP_0__boolean่จบๆ–ญ ๋ชจ๋“œ: ๋ชจ๋“  ๊ฒƒ์„ ๋ณด๊ณ  ํ•ญ์ƒ 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค
__CAPGO_KEEP_0__stringํŠน์ • ์ฒดํฌ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค (๋ฐ˜๋ณต ๋˜๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
__CAPGO_KEEP_0__stringํŠน์ • ์ฒดํฌ๋ฅผ ๊ฒฝ๊ณ ๋กœ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค (๋ฐ˜๋ณต ๋˜๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
__CAPGO_KEEP_0__boolean์„ธ๋ถ€ ๋กœ๊น…๊ณผ ํ•จ๊ป˜ ์ž์„ธํ•œ ์ถœ๋ ฅ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค
__CAPGO_KEEP_0__stringCustom Supabase host URL (for self-hosting or Capgo development)
---supa-anonstring๊ฐœ์ธ ํ˜ธ์ŠคํŒ…์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ปค์Šคํ…€ Supabase anon ํ‚ค

๐Ÿ”น ๋งˆ์ง€๋ง‰ ์ถœ๋ ฅ

์ œ๋ชฉ ' ๐Ÿ”น Last-output'
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build last-output

์ด์ „์œผ๋กœ ๊ธฐ๋ก๋œ ๋นŒ๋“œ ์ถœ๋ ฅ์„ ์ฝ์Šต๋‹ˆ๋‹ค. build request --output-record. ๊ธฐ๋ณธ์ ์œผ๋กœ JSON ์ „์ฒด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  โ€”field๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ field๋ฅผ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ ASCII QR๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. code๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CI์—์„œ ๋‹ค์šด๋กœ๋“œ URL ๋˜๋Š” QR๋ฅผ ๊ฐ€์ ธ์™€ PR ๋˜๋Š” ์ด์Šˆ์— ๋‹ค์‹œ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ: npx @capgo/cli build last-output โ€”path /tmp/build.json npx @capgo/cli build last-output โ€”path /tmp/build.json โ€”field outputUrl npx @capgo/cli build last-output โ€”path /tmp/build.json โ€”qr

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐํƒ€์ž…์„ค๋ช…
โ€”pathstringJSON ๊ธฐ๋ก์„ ์ž‘์„ฑํ•˜๋Š” โ€”output-record ์˜ต์…˜์˜ ๊ฒฝ๋กœ (ํ•„์ˆ˜)
โ€”fieldstring๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์˜ field๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค: jobId, appId, platform, buildMode, status, outputUrl, qrCodeAscii, qrCodePngPath, finishedAt, schemaVersion
โ€”qrbooleanPrint the rendered ASCII QR code (shortcut for โ€”field qrCodeAscii)

๐Ÿ”น ์ธ์ฆ ์ •๋ณด

์ธ์ฆ ์ •๋ณด ๊ด€๋ฆฌ

์ธ์ฆ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ๊ฒฝ๋กœ: ~/.__CAPGO_KEEP_0__-credentials/credentials.json (์ „์—ญ) ๋˜๋Š” .__CAPGO_KEEP_1__-credentials.json (์ง€์—ญ)

  • Credentials saved to ~/.capgo-credentials/credentials.json (global) or .capgo-credentials.json (local)
  • Capgo
  • ๋นŒ๋“œ ํ›„ Capgo์—์„œ ์ฆ‰์‹œ ์‚ญ์ œ
  • ๋นŒ๋“œ ์ถœ๋ ฅ๋ฌผ์€ ์‹œ๊ฐ„ ์ œํ•œ๋œ ๋‹ค์šด๋กœ๋“œ ๋งํฌ๋กœ ์˜ต์…˜์œผ๋กœ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“š ๋ฌธ์„œ: iOS ์„ค์ •: https://capgo.app/docs/cli/cloud-build/ios/ Android ์„ค์ •: https://capgo.app/docs/cli/cloud-build/android/

Alias: asc-key

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build credentials apple-key

App Store Connect ํŒ€ API ํ‚ค๋ฅผ macOS ์ „์šฉ ๊ฐ€์ด๋“œ ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ macOS์—์„œ๋งŒ ์ƒ์„ฑํ•˜์„ธ์š”. App Store Connect UI ๋‚ด์— ์ž„๋ฒ ๋””๋“œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด Apple์˜ UI๋ฅผ walks throughํ•ฉ๋‹ˆ๋‹ค. Issuer ID + Key ID๋ฅผ ์ž๋™์œผ๋กœ ์บก์ฒ˜ํ•˜๊ณ , ์ผํšŒ์šฉ .p8๋ฅผ ์ค‘๊ฐ„์—ๆˆช่Žทํ•˜๊ณ , Apple๊ณผ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ , ~/.appstoreconnect/private_keys์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. progress statistics๋Š” Capgo ๋ถ„์„์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค (CAPGO_DISABLE_TELEMETRY๋กœ ๋น„ํ™œ์„ฑํ™”). npx @capgo/cli build credentials apple-key โ€”appId com.example.app

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
Example:

์˜ต์…˜:

ParamType์„ค๋ช…
-astringAPI ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์ •์— ์—ฐ๊ฒฐ
--appIdstring์ด ์•ฑ iOS ๋นŒ๋“œ ์ธ์ฆ์„œ์— ์บก์ฒ˜๋œ ํ‚ค๋ฅผ ์ €์žฅ
--localboolean์ „์—ญ ํŒŒ์ผ ๋Œ€์‹  ํ”„๋กœ์ ํŠธ๋ณ„ .capgo-credentials.json ํŒŒ์ผ์— ์ €์žฅ
โ€”jsonbooleanJSON ํ˜•์‹์œผ๋กœ ์บก์ฒ˜๋œ Key ID / Issuer ID / .p8 ๊ฒฝ๋กœ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น ์ €์žฅ

์ €์žฅ
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build credentials save

iOS ๋˜๋Š” Android์šฉ ๋นŒ๋“œ ์ธ์ฆ์„œ๋ฅผ ๋กœ์ปฌ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๋Š” ๋‹ค์Œ ์œ„์น˜์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

  • ~/.capgo-credentials/credentials.json (๊ธฐ๋ณธ๊ฐ’, ์ „์—ญ)
  • capgo-credentials.json (ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— โ€”local ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ) โš ๏ธ ๋นŒ๋“œํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ์ธ์ฆ์„œ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ”’ ์ด ์ธ์ฆ์„œ๋Š” Capgo ์„œ๋ฒ„์— ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ฆ‰์‹œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ“š ์„ค์ • ๊ฐ€์ด๋“œ: iOS: https://capgo.app/docs/cli/cloud-build/ios/ Android: https://capgo.app/docs/cli/cloud-build/android/ npx @capgo/cli build credentials save โ€”platform ios
    โ€”certificate ./cert.p12 โ€”p12-password โ€œpasswordโ€
    โ€”ios-provisioning-profile ./profile.mobileprovision
    โ€”apple-key ./AuthKey.p8 โ€”apple-key-id โ€œKEY123โ€
    โ€”apple-issuer-id โ€œissuer-uuidโ€ โ€”apple-team-id โ€œteam-idโ€ Multi-target Example (app + widget extension): npx @capgo/cli build credentials save โ€”platform ios
    โ€”ios-provisioning-profile ./App.mobileprovision
    โ€”ios-provisioning-profile com.example.widget=./Widget.mobileprovision
    โ€ฆ npx @capgo/cli build credentials save โ€”platform android
    โ€”keystore ./release.keystore โ€”keystore-alias โ€œmy-keyโ€
    โ€”keystore-key-password โ€œkey-passโ€
    โ€”play-config ./service-account.json Local storage (per-project): npx @capgo/cli build credentials save โ€”local โ€”platform ios โ€ฆ

Example:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
iOS Example:

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐํƒ€์ž…์„ค๋ช…
--appIdstring์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ID (์˜ˆ: com.example.app) (ํ•„์ˆ˜)
--platformstringํ”Œ๋žซํผ: ios ๋˜๋Š” android (ํ•„์ˆ˜)
--certificatestringiOS: .p12 ์ธ์ฆ์„œ ํŒŒ์ผ ๊ฒฝ๋กœ
โ€”ios-์ธ์ฆ์„œ-ํ”„๋กœํŒŒ์ผstringiOS: ์ธ์ฆ์„œ ํ”„๋กœํŒŒ์ผ ๊ฒฝ๋กœ ๋˜๋Š” bundleId=path (๋ฐ˜๋ณต ๊ฐ€๋Šฅ)
โ€”p12-๋น„๋ฐ€๋ฒˆํ˜ธstringiOS: ์ธ์ฆ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ (์ธ์ฆ์„œ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์—†์œผ๋ฉด ์„ ํƒ ์‚ฌํ•ญ)
โ€”apple-ํ‚คstringiOS: .p8 App Store Connect API ํ‚ค ๊ฒฝ๋กœ
โ€”apple-ํ‚ค-์•„์ด๋””stringiOS: App Store Connect API ํ‚ค ID
โ€”apple-๋ฐœ๊ธ‰์ž-์•„์ด๋””stringiOS: App Store Connect ๋ฐœ๊ธ‰์ž ID
โ€”apple-ํŒ€-์•„์ด๋””stringiOS: App Store Connect ํŒ€ ID
โ€”ios-๋ฐฐํฌstringiOS: ๋ฐฐํฌ ๋ชจ๋“œ
โ€”์• ํ”Œ-์•„์ด๋””stringiOS: ์• ํ”Œ ID ์ด๋ฉ”์ผ (App Store Connect API ํ‚ค ๋Œ€์ฒด)
โ€”์• ํ”Œ-์•ฑ-ํŠน์ •-ํŒจ์Šค์›Œ๋“œstringiOS: ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ ์—…๋กœ๋“œ๋ฅผ ์œ„ํ•œ ์•ฑ ํŠน์ • ํŒจ์Šค์›Œ๋“œ (xxxx-xxxx-xxxx-xxxx)
โ€”์• ํ”Œ-์•ฑ-์•„์ด๋””stringiOS: ์•ฑ ์Šคํ† ์–ด ์—ฐ๊ฒฐ ์•ฑ ์•„์ด๋”” (์• ํ”Œ ์•„์ด๋””์™€ ์•ฑ ํŠน์ • ํŒจ์Šค์›Œ๋“œ์™€ ํ•จ๊ป˜ ํ•„์š”)
โ€”keystorestring์•ˆ๋“œ๋กœ์ด๋“œ: Keystore ํŒŒ์ผ ๊ฒฝ๋กœ (.keystore ๋˜๋Š” .jks)
โ€”keystore-aliasstring์•ˆ๋“œ๋กœ์ด๋“œ: Keystore ํ‚ค ๋ณ„์นญ
---keystore-key-passwordstring์•ˆ๋“œ๋กœ์ด๋“œ: Keystore ํ‚ค ๋น„๋ฐ€๋ฒˆํ˜ธ
---keystore-store-passwordstring์•ˆ๋“œ๋กœ์ด๋“œ: Keystore ์ €์žฅ์†Œ ๋น„๋ฐ€๋ฒˆํ˜ธ
---play-configstring์•ˆ๋“œ๋กœ์ด๋“œ: Play ์Šคํ† ์–ด ์„œ๋น„์Šค ๊ณ„์ • JSON์˜ ๊ฒฝ๋กœ
---android-flavorstring์•ˆ๋“œ๋กœ์ด๋“œ: ๋นŒ๋“œํ•  ์ œํ’ˆ์˜ ๋ง›์ง‘ (์˜ˆ: ํ”„๋กœ๋•์…˜). ํ”„๋กœ์ ํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๋ง›์ง‘์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
---in-app-update-prioritystring์•ˆ๋“œ๋กœ์ด๋“œ: ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ๋‚ด ์•ฑ ์—…๋ฐ์ดํŠธ ์šฐ์„ ์ˆœ์œ„ (์ •์ˆ˜ 0โ€“5; ๋” ๋†’์„์ˆ˜๋ก ๋” ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค). ์ƒ๋žตํ•˜๋ฉด Play์˜ ๊ธฐ์กด ๊ฐ’์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
---localbooleanํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ .capgo-credentials.json์— ์ €์žฅํ•˜๊ธฐ ๋Œ€์‹  ์ „์—ญ ~/.capgo-credentials/์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
โ€”์ถœ๋ ฅ ์—…๋กœ๋“œboolean๋นŒ๋“œ ์ถœ๋ ฅ (IPA/APK/AAB)์„ Capgo ์ €์žฅ์†Œ์— ์—…๋กœ๋“œํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ ๋งํฌ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
โ€”์ถœ๋ ฅ ์—…๋กœ๋“œ ๋น„ํ™œ์„ฑํ™”boolean๋นŒ๋“œ ์ถœ๋ ฅ (IPA/APK/AAB)์„ Capgo ์ €์žฅ์†Œ์— ์—…๋กœ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
โ€”์ถœ๋ ฅ ๋ณด์กดstring์ถœ๋ ฅ ๋งํฌ TTL: 1์‹œ๊ฐ„์—์„œ 7์ผ (๊ธฐ๋ณธ: 1์‹œ๊ฐ„). ์˜ˆ์‹œ: 1์‹œ๊ฐ„, 6์‹œ๊ฐ„, 2์ผ
โ€”๋นŒ๋“œ ๋ฒˆํ˜ธ ์ฆ๊ฐ€ ๊ฑด๋„ˆ๋›ฐ๊ธฐboolean๋ฏธ๋ž˜ ๋นŒ๋“œ์—์„œ ์ž๋™ ๋นŒ๋“œ ๋ฒˆํ˜ธ/๋ฒ„์ „ code ์ฆ๊ฐ€๋ฅผ ๊ฑด๋„ˆ๋›ฐ์„ธ์š”.
โ€”๋นŒ๋“œ ๋ฒˆํ˜ธ ์ฆ๊ฐ€ ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๋น„ํ™œ์„ฑํ™”boolean์ž๋™ ๋นŒ๋“œ ๋ฒˆํ˜ธ ์ฆ๊ฐ€๋ฅผ ์žฌ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ ๋™์ž‘)
โ€”๋งˆ์ผ€ํŒ… ๋ฒ„์ „ ์ฆ๊ฐ€ ๊ฑด๋„ˆ๋›ฐ๊ธฐboolean์•ฑ์ด ์ด๋ฏธ ์ถœ์‹œ๋œ ๊ฒฝ์šฐ ๋ฏธ๋ž˜ ๋นŒ๋“œ์—์„œ ์ž๋™ ๋งˆ์ผ€ํŒ… ๋ฒ„์ „ ์ฆ๊ฐ€๋ฅผ ๊ฑด๋„ˆ๋›ฐ์„ธ์š”.
โ€”no-skip-marketing-version-bumpboolean์ž๋™ ๋งˆ์ผ€ํŒ… ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ ๋™์ž‘)

๐Ÿ“‹ ๋ชฉ๋ก

๋ชฉ๋ก ์ œ๋ชฉ
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build credentials list

์ €์žฅ๋œ ๋นŒ๋“œ ์ž๊ฒฉ ์ฆ๋ช… ๋ชฉ๋ก (๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ฐ€๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค). ํ˜„์žฌ ์ €์žฅ๋œ ์ž๊ฒฉ ์ฆ๋ช…(์ „์—ญ ๋ฐ ์ง€์—ญ ๋ชจ๋‘)์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์˜ˆ์‹œ: npx @capgo/cli build credentials list # ๋ชจ๋“  ์•ฑ ๋ชฉ๋ก npx @capgo/cli build credentials list โ€”appId com.example.app # ํŠน์ • ์•ฑ ๋ชฉ๋ก

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐํƒ€์ž…์„ค๋ช…
์•ฑ IDstring์•ฑ ID๋ฅผ ๋ชฉ๋ก์— ์ถ”๊ฐ€ (์„ ํƒ ์‚ฌํ•ญ, ์ƒ๋žต ์‹œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๋ชฉ๋ก์— ์ถ”๊ฐ€)
โ€”localboolean๋กœ์ปฌ .capgo-credentials.json์—์„œ๋งŒ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋ชฉ๋กํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น Clear

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

์ €์žฅ๋œ ๋นŒ๋“œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. โ€”appId ๋ฐ โ€”platform๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ž๊ฒฉ ์ฆ๋ช…์„ ๋Œ€์ƒ์œผ๋กœํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ: npx @capgo/cli build credentials clear # ์ „์—ญ์—์„œ ๋ชจ๋“  ์•ฑ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. npx @capgo/cli build credentials clear โ€”local # ๋กœ์ปฌ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. npx @capgo/cli build credentials clear โ€”appId com.example.app โ€”platform ios

์˜ต์…˜:

ParamType์„ค๋ช…
โ€”์•ฑ ์•„์ด๋””string์•ฑ ์•„์ด๋””๋ฅผ ์ง€์šฐ๋ ค๋ฉด (์„ ํƒ ์‚ฌํ•ญ, ๋ชจ๋“  ์•ฑ์„ ์ง€์šฐ๋ฉด omitted)
โ€”ํ”Œ๋žซํผstringํด๋ฆฌ์–ดํ•  ํ”Œ๋žซํผ: ios ๋˜๋Š” android (์„ ํƒ ์‚ฌํ•ญ, ๋ชจ๋“  ํ”Œ๋žซํผ์„ ์ง€์šฐ๋ฉด omitted)
โ€”๋กœ์ปฌboolean๋กœ์ปฌ .capgo-credentials.json ๋Œ€์‹  ๊ธ€๋กœ๋ฒŒ์—์„œ ์ง€์šฐ๋ ค๋ฉด

๐Ÿ”น ์—…๋ฐ์ดํŠธ

์—…๋ฐ์ดํŠธ
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build credentials update

์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ์ธ์ฆ์„œ๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด. ๊ธฐ์กด ์ธ์ฆ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ์ œ๊ณตํ•  ํ•„๋“œ๋งŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ณตํ•œ ์˜ต์…˜์—์„œ ํ”Œ๋žซํผ์ด ์ž๋™์œผ๋กœ ๊ฐ์ง€๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ: npx @capgo/cli build credentials update โ€”ios-provisioning-profile ./new-profile.mobileprovision npx @capgo/cli build credentials update โ€”local โ€”keystore ./new-keystore.jks

์˜ต์…˜:

ParamType์„ค๋ช…
โ€”appIdstring์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ID (์ž๋™์œผ๋กœ capacitor.config์—์„œ ์ถ”์ถœ๋˜๋ฉฐ ์ƒ๋žต ์‹œ omitted)
โ€”platformstringํ”Œ๋žซํผ: ios ๋˜๋Š” android (์˜ต์…˜์—์„œ ์ž๋™์œผ๋กœ ์ถ”์ถœ)
โ€”localboolean์ง€์—ญ capgo-credentials.json์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋Œ€์‹  ์ „์—ญ
โ€”certificatestringP12 ์ธ์ฆ์„œ ํŒŒ์ผ ๊ฒฝ๋กœ
โ€”ios-provisioning-profilestring์„ค์ • ํ”„๋กœํŒŒ์ผ ๊ฒฝ๋กœ ๋˜๋Š” bundleId=path (๋ฐ˜๋ณต ๊ฐ€๋Šฅ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€)
โ€”overwrite-ios-provisioning-mapboolean์ „์ฒด ์„ค์ • ํ”„๋กœํŒŒ์ผ ๋Œ€์‹  ๋ณ‘ํ•ฉํ•˜๋Š” ๋Œ€์‹  ๋Œ€์ฒด (๊ธฐ๋ณธ: ๋ณ‘ํ•ฉ)
โ€”p12-passwordstringP12 ์ธ์ฆ์„œ ์•”ํ˜ธ
โ€”apple-keystringApp Store Connect API ํ‚ค (.p8 ํŒŒ์ผ) ๊ฒฝ๋กœ
โ€”apple-key-idstringApp Store Connect API ํ‚ค ID
โ€”apple-issuer-idstringApp Store Connect ๋ฐœ๊ธ‰์ž ID
โ€”apple-team-idstring์• ํ”Œ ์Šคํ† ์–ด ์—ฐ๊ฒฐ ํŒ€ ID
โ€”์• ํ”Œ ์•„์ด๋””stringiOS: ์•ฑ ์Šคํ† ์–ด ์—ฐ๊ฒฐ API ํ‚ค ๋Œ€์‹  ์•ฑ ์Šคํ† ์–ด ์—ฐ๊ฒฐ ์ด๋ฉ”์ผ์„ ์œ„ํ•œ ์•ฑ๋ณ„ ์•”ํ˜ธ ์—…๋กœ๋“œ (๋Œ€์•ˆ)
โ€”์• ํ”Œ ์•ฑ๋ณ„ ์•”ํ˜ธstringiOS: ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ ์—…๋กœ๋“œ๋ฅผ ์œ„ํ•œ ์•ฑ๋ณ„ ์•”ํ˜ธ (xxxx-xxxx-xxxx-xxxx)
โ€”์• ํ”Œ ์•ฑ ์•„์ด๋””stringiOS: ์•ฑ ์Šคํ† ์–ด ์—ฐ๊ฒฐ ์•ฑ ์•„์ด๋”” (์• ํ”Œ ์•„์ด๋””์™€ ์•ฑ๋ณ„ ์•”ํ˜ธ, โ€”apple-app-specific-password์™€ ํ•จ๊ป˜ ํ•„์š”)
โ€”iOS ๋ฐฐํฌstringiOS: ๋ฐฐํฌ ๋ชจ๋“œ
โ€”ํ‚ค์Šคํ† ์–ดstringํ‚ค์Šคํ† ์–ด ํŒŒ์ผ ๊ฒฝ๋กœ (.keystore ๋˜๋Š” .jks)
โ€”ํ‚ค์Šคํ† ์–ด ๋ณ„๋ช…string__CAPGO_KEEP_0__
__CAPGO_KEEP_0__string__CAPGO_KEEP_0__
__CAPGO_KEEP_0__string__CAPGO_KEEP_0__
__CAPGO_KEEP_0__string__CAPGO_KEEP_0__
__CAPGO_KEEP_1__string__CAPGO_KEEP_2__
__CAPGO_KEEP_3__string__CAPGO_KEEP_4__
__CAPGO_KEEP_5__boolean๋นŒ๋“œ ์ถœ๋ ฅ (IPA/APK/AAB)์„ Capgo ์ €์žฅ์†Œ์— ์—…๋กœ๋“œํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ ๋งํฌ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
โ€”no-output-uploadboolean๋นŒ๋“œ ์ถœ๋ ฅ (IPA/APK/AAB)์„ Capgo ์ €์žฅ์†Œ์— ์—…๋กœ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
โ€”output-retentionstring์ถœ๋ ฅ ๋งํฌ TTL: 1์‹œ๊ฐ„์—์„œ 7์ผ๊นŒ์ง€. ์˜ˆ์‹œ: 1์‹œ๊ฐ„, 6์‹œ๊ฐ„, 2์ผ
โ€”skip-build-number-bumpboolean๋ฏธ๋ž˜ ๋นŒ๋“œ์—์„œ ์ž๋™ ๋นŒ๋“œ ๋ฒˆํ˜ธ/๋ฒ„์ „ code ์ฆ๊ฐ€๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.
โ€”no-skip-build-number-bumpboolean์ž๋™ ๋นŒ๋“œ ๋ฒˆํ˜ธ ์ฆ๊ฐ€๋ฅผ ์žฌ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ ๋™์ž‘)
โ€”skip-marketing-version-bumpboolean์•ฑ์ด ์ด๋ฏธ ์ถœ์‹œ๋˜์—ˆ์„ ๋•Œ ๋ฏธ๋ž˜ ๋นŒ๋“œ์—์„œ ์ž๋™ ๋งˆ์ผ€ํŒ… ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.
โ€”no-skip-marketing-version-bumpboolean์ž๋™ ๋งˆ์ผ€ํŒ… ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™” (๊ธฐ๋ณธ ๋™์ž‘)

๐Ÿ”น ๊ด€๋ฆฌ

๊ด€๋ฆฌ ์ œ๋ชฉ
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build credentials manage

์ €์žฅ๋œ ๋นŒ๋“œ ์ธ์ฆ์„œ๋ฅผ ์ƒํ˜ธ ์ž‘์šฉ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ๋œ ์ธ์ฆ์„œ๋ฅผๆต่งˆํ•˜๊ณ  ๊ตฌ์„ฑ๋œ ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ CI/CD-์ค€๋น„๋œ .env ํŒŒ์ผ์„ ๋‚ด๋ณด๋‚ด๊ฑฐ๋‚˜ ํ”Œ๋žซํผ์˜ ์ธ์ฆ์„œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ TUI๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. capgo init. ์˜ˆ์‹œ: npx @capgo/cli build credentials manage npx @capgo/cli build credentials manage โ€”appId com.example.app npx @capgo/cli build credentials manage โ€”appId com.example.app โ€”platform ios npx @capgo/cli build credentials manage โ€”local

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐํƒ€์ž…์„ค๋ช…
์•ฑ IDstring์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ID ๊ด€๋ฆฌ (์„ ํƒ ์‚ฌํ•ญ, ์ƒ๋žต ์‹œ ์„ ํƒํ•˜๋„๋ก ์œ ๋„)
โ€” ํ”Œ๋žซํผstring๊ด€๋ฆฌํ•  ํ”Œ๋žซํผ: ios ๋˜๋Š” android (์„ ํƒ ์‚ฌํ•ญ, ์ƒ๋žต ์‹œ ์„ ํƒํ•˜๋„๋ก ์œ ๋„)
โ€” ๋กœ์ปฌboolean๋กœ์ปฌ์— ์žˆ๋Š”๋งŒ .capgo-credentials.json๋งŒ ๋ธŒ๋ผ์šฐ์ง•

๐Ÿ”น ์ด๋™

์ด๋™ ์„น์…˜
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest build credentials migrate

๊ธฐ์กด์˜ ๋ฉ€ํ‹ฐ ํƒ€๊ฒŸ ํ˜•์‹์œผ๋กœ ์ œ๊ณต ํ”„๋กœํŒŒ์ผ์„ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. BUILD_PROVISION_PROFILE_BASE64์„ CAPGO_IOS_PROVISIONING_MAP์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Xcode ํ”„๋กœ์ ํŠธ์—์„œ ์ž๋™์œผ๋กœ ๋ฉ”์ธ ๋ฒˆ๋“ค ID๋ฅผ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค. npx @capgo/cli build credentials migrate โ€”platform ios

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
Example:

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐํƒ€์ž…์„ค๋ช…
โ€”appIdstring์•ฑ ID (์ž๋™์œผ๋กœ capacitor.config์—์„œ ์ถ”์ถœ๋˜๋ฉฐ ์ƒ๋žต ์‹œ)
โ€”platformstringํ”Œ๋žซํผ (ํ˜„์žฌ ios๋งŒ ์ง€์›)
โ€”localboolean์ „์—ญ ๋Œ€์‹  ๋กœ์ปฌ .capgo-credentials.json์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜