๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ข ์ฑ„๋„

๐Ÿ“ข Capgo Cloud์—์„œ ์•ฑ ์—…๋ฐ์ดํŠธ ๋ฐฐํฌ ์ฑ„๋„์„ ๊ด€๋ฆฌํ•˜์—ฌ ๊ธฐ๊ธฐ์— ์—…๋ฐ์ดํŠธ๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ๋ฐฉ์‹์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

๋ณ„์นญ: a

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest channel add

โž• ์—…๋ฐ์ดํŠธ ๋ฐฐํฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Capgo Cloud์— ์ƒˆ๋กœ์šด ์•ฑ ๋ฐฐํฌ ์ฑ„๋„์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

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

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-dboolean์ฑ„๋„์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •
โ€”self-assignboolean๊ธฐ๊ธฐ๊ฐ€ ์ด ์ฑ„๋„์— ์ž์ฒด ํ• ๋‹น๋˜๋„๋ก ํ—ˆ์šฉ
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)

๋ณ„์นญ: d

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest channel delete

๐Ÿ—‘๏ธ Capgo Cloud์—์„œ ์ฑ„๋„์„ ์‚ญ์ œํ•˜๊ณ , ํ•„์š”ํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ bundle๋„ ํ•จ๊ป˜ ์‚ญ์ œํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

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

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
โ€”delete-bundleboolean์ฑ„๋„์— ์—ฐ๊ฒฐ๋œ bundle์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. App Preview ํ‚ค๋Š” ์ž์ฒด ํ”„๋ฆฌ๋ทฐ ์ฑ„๋„๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด์„œ ๊ณต์œ ๋˜์ง€ ์•Š์€ bundle๋งŒ ์›์ž์ ์œผ๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€”success-if-not-foundboolean์ฑ„๋„์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด ์„ฑ๊ณต
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)

๋ณ„์นญ: l

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest channel list

๐Ÿ“‹ Capgo Cloud์— ์„ค์ •๋œ ๋ชจ๋“  ์•ฑ ์ฑ„๋„์„ ๋‚˜์—ดํ•˜์—ฌ ๋ฐฐํฌ ์„ค์ •์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest channel list com.example.app

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest channel currentBundle

๐Ÿ“ฆ ์—…๋ฐ์ดํŠธ ์ถ”์ ์„ ์œ„ํ•ด Capgo Cloud์—์„œ ํŠน์ • ์ฑ„๋„์— ์—ฐ๊ฒฐ๋œ ํ˜„์žฌ bundle์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

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

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-cstringํ˜„์žฌ ๋ฒˆ๋“ค์„ ๊ฐ€์ ธ์˜ฌ ์ฑ„๋„
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
โ€”quietboolean๋ฒˆ๋“ค ๋ฒ„์ „๋งŒ ์ถœ๋ ฅ
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)

๋ณ„์นญ: s

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest channel set

โš™๏ธ ๋ฒˆ๋“ค ์—ฐ๊ฒฐ, ์—…๋ฐ์ดํŠธ ์ „๋žต(major, minor, metadata, patch, none) ์„ค์ •, ๋˜๋Š” ๋””๋ฐ”์ด์Šค ํƒ€๊ฒŸํŒ…(iOS, Android, dev, prod, emulator, device)๊ณผ ๊ฐ™์€ ์ฑ„๋„ ์„ค์ •์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ฑ„๋„์€ ๋ฐ˜๋“œ์‹œ default๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest channel set production com.example.app --bundle 1.0.0 --state default

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
-bstring์„ค์ •ํ•  ํŒŒ์ผ์˜ Bundle ๋ฒ„์ „ ๋ฒˆํ˜ธ
-sstring์ฑ„๋„ ์ƒํƒœ ์„ค์ • (default ๋˜๋Š” normal)
โ€”latest-remotebooleancapgo ํด๋ผ์šฐ๋“œ์— ์—…๋กœ๋“œ๋œ ์ตœ์‹  ๋ฒˆ๋“ค์„ ๊ฐ€์ ธ์™€ ์ฑ„๋„์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค
โ€”latestbooleanpackage.json์˜ ์ตœ์‹  ๋ฒ„์ „ ํ‚ค๋ฅผ ๊ฐ€์ ธ์™€ ์ฑ„๋„์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค
โ€”downgradeboolean๋„ค์ดํ‹ฐ๋ธŒ ๋ฒ„์ „๋ณด๋‹ค ๋‚ฎ์€ ๋ฒ„์ „์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค
โ€”no-downgradeboolean๋„ค์ดํ‹ฐ๋ธŒ ๋ฒ„์ „๋ณด๋‹ค ๋‚ฎ์€ ๋ฒ„์ „์œผ๋กœ์˜ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค
โ€”iosbooleaniOS ๊ธฐ๊ธฐ๋กœ ์—…๋ฐ์ดํŠธ ์ „์†ก์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค
โ€”no-iosbooleaniOS ๊ธฐ๊ธฐ๋กœ ์—…๋ฐ์ดํŠธ ์ „์†ก์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค
โ€”androidbooleanAndroid ๊ธฐ๊ธฐ๋กœ ์—…๋ฐ์ดํŠธ ์ „์†ก ํ—ˆ์šฉ
โ€”no-androidbooleanAndroid ๊ธฐ๊ธฐ๋กœ ์—…๋ฐ์ดํŠธ ์ „์†ก ๋น„ํ™œ์„ฑํ™”
โ€”self-assignboolean๊ธฐ๊ธฐ๊ฐ€ ์ด ์ฑ„๋„์— ์ž์ฒด ํ• ๋‹น๋˜๋„๋ก ํ—ˆ์šฉ
โ€”no-self-assignboolean๊ธฐ๊ธฐ๊ฐ€ ์ด ์ฑ„๋„์— ์ž์ฒด ํ• ๋‹น๋˜์ง€ ์•Š๋„๋ก ๋น„ํ™œ์„ฑํ™”
โ€”disable-auto-updatestring์—…๋ฐ์ดํŠธ ์œ ํ˜•๋ณ„ ์ฐจ๋‹จ: major, minor, metadata, patch ๋˜๋Š” none(๋ชจ๋‘ ํ—ˆ์šฉ)
โ€”update-packagestringzip, delta ๋˜๋Š” ๋‘˜ ๋‹ค ์ œ๊ณต: all, zip, delta, zip_from_builtin ๋˜๋Š” delta_from_builtin
โ€”rollout-bundlestringํ•ด๋‹น ์ฑ„๋„์—์„œ ์ ์ง„์ ์œผ๋กœ ๋ฐฐํฌํ•  Bundle ๋ฒ„์ „
โ€”rollout-percentagestring0์—์„œ 100 ์‚ฌ์ด์˜ ๋ฐฐํฌ ๋น„์œจ
โ€”rollout-percentage-bpsstring0์—์„œ 10000 ์‚ฌ์ด์˜ basis points ๋‹จ์œ„ ๋ฐฐํฌ ๋น„์œจ
โ€”rollout-enableboolean์„ค์ •๋œ rollout ํ™œ์„ฑํ™”
โ€”rollout-disableboolean์„ค์ •๋œ rollout ๋น„ํ™œ์„ฑํ™”
โ€”rollout-pauseboolean์„ ํƒ๋œ ๋””๋ฐ”์ด์Šค๋ฅผ ๋กค๋ฐฑํ•˜์ง€ ์•Š๊ณ  rollout ๋…ธ์ถœ ์ผ์‹œ ์ค‘์ง€
โ€”rollout-resumeboolean์ผ์‹œ ์ค‘์ง€๋œ ๋กค์•„์›ƒ ์žฌ๊ฐœ
โ€”rollout-rollbackboolean๋กค์•„์›ƒ ์ƒํƒœ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๊ธฐ๊ธฐ๋ฅผ stable ๋ฒ„์ „์œผ๋กœ ๋ณต๊ตฌ
โ€”rollout-promoteboolean๋กค์•„์›ƒ ๋Œ€์ƒ์„ stable๋กœ ์Šน๊ฒฉํ•˜๊ณ  ๋กค์•„์›ƒ ์ƒํƒœ ์ดˆ๊ธฐํ™”
โ€”rollout-cache-ttl-secondsstringCloudflare ๋กค์•„์›ƒ ๊ฒฐ์ • ์บ์‹œ TTL (์ดˆ ๋‹จ์œ„)
โ€”auto-pause-enabledboolean๋กค์•„์›ƒ ์ž๋™ ์ผ์‹œ ์ค‘์ง€ ์ •์ฑ… ํ™œ์„ฑํ™”
โ€”auto-pause-disabledboolean๋กค์•„์›ƒ ์ž๋™ ์ผ์‹œ ์ค‘์ง€ ์ •์ฑ… ๋น„ํ™œ์„ฑํ™”
โ€”auto-pause-window-minutesstringRollout ์ž๋™ ์ผ์‹œ ์ค‘์ง€๋ฅผ ์œ„ํ•œ ํ†ต๊ณ„ ์ฐฝ
โ€”auto-pause-failure-rate-bpsstringBasis point ๋‹จ์œ„์˜ ์‹คํŒจ์œจ ์ž„๊ณ„๊ฐ’
โ€”auto-pause-confidencestring0๊ณผ 1 ์‚ฌ์ด์˜ ์‹ ๋ขฐ ์ˆ˜์ค€
โ€”auto-pause-min-attemptsstring์ž๋™ ์ผ์‹œ ์ค‘์ง€ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์œ„ํ•œ ์ตœ์†Œ ์„ค์น˜ ๋ฐ ์‹คํŒจ ์‹œ๋„ ํšŸ์ˆ˜
โ€”auto-pause-min-failuresstring์ž๋™ ์ผ์‹œ ์ค‘์ง€ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์œ„ํ•œ ์ตœ์†Œ ์‹คํŒจ ํšŸ์ˆ˜
โ€”auto-pause-actionstring์ž๋™ ์ผ์‹œ ์ค‘์ง€ ๋™์ž‘: pause, rollback ๋˜๋Š” notify
โ€”auto-pause-cooldown-minutesstring์ž๋™ ์ผ์‹œ ์ค‘์ง€ ์žฌ๋ฐœ์ƒ ์ „ ๋Œ€๊ธฐ ์‹œ๊ฐ„
โ€”devboolean๊ฐœ๋ฐœ์šฉ ๊ธฐ๊ธฐ์— ์—…๋ฐ์ดํŠธ ์ „์†ก ํ—ˆ์šฉ
โ€”no-devboolean๊ฐœ๋ฐœ์šฉ ๊ธฐ๊ธฐ์— ์—…๋ฐ์ดํŠธ ์ „์†ก ๋น„ํ™œ์„ฑํ™”
โ€”prodbooleanํ”„๋กœ๋•์…˜ ๊ธฐ๊ธฐ์— ์—…๋ฐ์ดํŠธ ์ „์†ก ํ—ˆ์šฉ
โ€”no-prodbooleanํ”„๋กœ๋•์…˜ ๊ธฐ๊ธฐ์— ์—…๋ฐ์ดํŠธ ์ „์†ก ๋น„ํ™œ์„ฑํ™”
โ€”emulatorboolean์—๋ฎฌ๋ ˆ์ดํ„ฐ ๊ธฐ๊ธฐ์— ์—…๋ฐ์ดํŠธ ์ „์†ก ํ—ˆ์šฉ
โ€”no-emulatorboolean์—๋ฎฌ๋ ˆ์ดํ„ฐ ๊ธฐ๊ธฐ๋กœ ์—…๋ฐ์ดํŠธ ์ „์†ก ๋น„ํ™œ์„ฑํ™”
--deviceboolean์‹ค์ œ ๊ธฐ๊ธฐ๋กœ ์—…๋ฐ์ดํŠธ ์ „์†ก ํ—ˆ์šฉ
--no-deviceboolean์‹ค์ œ ๊ธฐ๊ธฐ๋กœ ์—…๋ฐ์ดํŠธ ์ „์†ก ๋น„ํ™œ์„ฑํ™”
--qr-previewboolean์ฑ„๋„ ์—…๋ฐ์ดํŠธ ํ›„ ์ด ์ฑ„๋„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์šฉ ํ„ฐ๋ฏธ๋„ QR code ์ถœ๋ ฅ
--send-update-notificationboolean์—ฐ๊ฒฐ๋œ ์ฑ„๋„ ๋ฒˆ๋“ค ์—…๋ฐ์ดํŠธ ํ›„ ๊ธฐ๊ธฐ์— ๋„ค์ดํ‹ฐ๋ธŒ ์—…๋ฐ์ดํŠธ ํ™•์ธ ์•Œ๋ฆผ ์ „์†ก
--package-jsonstring๋ชจ๋…ธ๋ ˆํฌ์˜ package.json ํŒŒ์ผ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
--ignore-metadata-checkboolean๋ฒˆ๋“ค์— node_modules๊ฐ€ ์žˆ์œผ๋ฉด ํ˜ธํ™˜์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)