๐Ÿš€ CodePush Standalone ์„œ๋ฒ„ ๊ตฌ์ถ• ๋ฐ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ (Azure ๊ธฐ๋ฐ˜)

PillowSophieยท2025๋…„ 5์›” 19์ผ

๐Ÿ“ฆ ๊ฐœ์š”

CodePush Standalone ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ํฌํฌํ•˜๊ณ  Azure์— ๋ฐฐํฌํ•ด์„œ ์ž์ฒด OTA ๋ฐฐํฌ ์‹œ์Šคํ…œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ์ •๋ฆฌ


๐Ÿงฐ 1. ์ดˆ๊ธฐ ์ค€๋น„

  1. CodePush ์„œ๋ฒ„ ํฌํฌ

  2. ๋กœ์ปฌ์— ํด๋ก 

    git clone https://github.com/your-username/code-push-server.git
  3. Azure CLI ์„ค์น˜

    brew install azure-cli

โ˜๏ธ 2. Azure ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ

  1. ๊ณต์‹ ๋ฌธ์„œ ์ฐธ๊ณ ํ•ด์„œ Azure ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ์ ˆ์ฐจ ๋”ฐ๋ผ๊ฐ

  2. Azure ๊ตฌ๋… ์„ค์ •

    az account set --subscription <subscription-id>
  3. ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน ์ƒ์„ฑ

    az group create --name <resource-group-name> --location <az-location>
  4. Bicep ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋ฆฌ์†Œ์Šค ๋ฐฐํฌ

    cd code-push-server/api
    az deployment group create \
      --resource-group <resource-group-name> \
      --template-file ./codepush-infrastructure.bicep \
      --parameters project_suffix=<project-suffix> az_location=<az-location>

    ์ฐธ๊ณ ๋กœ project-suffix ๋Š” ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ๋ถ™์ด๋„๋ก ํ•˜์ž. codepush ๋Š” ์–ด์งœํ”ผ ์œ„์˜ ๋ช…๋ น์–ด๋กœ ๋ฆฌ์†Œ์Šค ๋งŒ๋“ค ๋•Œ prefix ๋กœ ๋ถ™์Œ.


๐Ÿ” 3. OAuth ์„ค์ •

  1. ๋ฐฐํฌ ๋„์ค‘ GitHub OAuth ๊ด€๋ จ ์ž…๋ ฅ ๋‚˜์˜ค๋Š”๋ฐ, ์•„์ง ์„œ๋น„์Šค ์ฃผ์†Œ๊ฐ€ ์—†์œผ๋‹ˆ๊นŒ ๊ทธ๋ƒฅ ์—”ํ„ฐ ์น˜๊ณ  ๋„˜์–ด๊ฐ

  2. Azure Portal ์ ‘์† โ†’ ์›น์•ฑ โ†’ ๋ฐฐํฌ > ๋ฐฐํฌ ์„ผํ„ฐ > ์„ค์ • ๋“ค์–ด๊ฐ€์„œ Git ์—ฐ๊ฒฐ ๋Š๊ณ  ์ฒ˜์Œ์— ํฌํฌํ•œ ์ฝ”๋“œํ‘ธ์‹œ ์„œ๋ฒ„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐ

  3. ์กฐ์ง ์„ ํƒ ์•ˆ ๋œจ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

    • ๊ธฐ์กด์— azure ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ์—ˆ๋‹ค๋ฉด ์ƒˆ๋กœ์šด organization ์ด ์•ˆ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Œ.
    • ๊ธฐ์กด ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋˜ ๊นƒํ—ˆ๋ธŒ ๊ณ„์ •์—์„œ Integrations > Applications > Authorized OAuth Apps ์—์„œ azure ๋ฅผ ํ•ด์ œํ•œ ํ›„ azure ์ฝ˜์†”์—์„œ ๋‹ค์‹œ ๊ถŒํ•œ ์š”์ฒญ
    • ์ด๋•Œ ์›ํ•˜๋Š” ์กฐ์ง ๊ผญ ์ฒดํฌํ•ด์•ผ ํ•จ


๐Ÿ› ๏ธ 4. ๋ฐฐํฌ ํ›„ ์˜ค๋ฅ˜ ๋Œ€์‘

  1. ๋ฐฐํฌ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Œ. ์›์ธ์€ package.json์ด api ํด๋” ์•ˆ์— ์žˆ์–ด์„œ ๋ฃจํŠธ ๊ธฐ์ค€์œผ๋กœ npm ์‹คํ–‰๋  ๊ฒฝ์šฐ ๊นจ์ง

  2. ์œˆ๋„์šฐ์šฉ ๋ช…๋ น์–ด ๋“ค์–ด์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ์ผ๋ฐ˜ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๋ฐ”๊ฟ”์•ผ ํ•จ



โš™๏ธ 5. ๋นŒ๋“œ๊ฐ€ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ -> ์›น์•ฑ ์„œ๋น„์Šค์— ์›๊ฒฉ์œผ๋กœ ์ ‘์†ํ•˜์—ฌ ํ™•์ธ

cd code-push-server/api
npm install
npm run build
npm start

8080 ํฌํŠธ ์ถฉ๋Œํ•˜๋ฉด Azure์—์„œ ์•ฑ ์žฌ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ํฌํŠธ ๋ณ€๊ฒฝํ•˜๋ฉด ๋จ


6. CLI ์„ค์น˜

  1. ํด๋ก  ๋ฐ›์€ code-push-server/cli ์—์„œ
npm install

npm run build

npm install -g .

code-push-standalone --version

๐Ÿ”‘ 7. GitHub OAuth ํด๋ผ์ด์–ธํŠธ ๋“ฑ๋ก

code-push-server/api/README.md ์ฐธ๊ณ ํ•ด์„œ GitHub OAuth Client ID/Secret ์ƒ์„ฑํ•จ

๋“ฑ๋ก ํ›„ CLI์—์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•จ

code-push-standalone register https://your-app.azurewebsites.net/
code-push-standalone login https://your-app.azurewebsites.net/

๐Ÿงช 8. CLI ์‚ฌ์šฉ๋ฒ• ์˜ˆ์‹œ

๋ฆด๋ฆฌ์ฆˆ

code-push-standalone release-react <App name> --dev

๋ฐฐํฌ ์ƒํƒœ ํ™•์ธ

code-push-standalone deployment ls <App name>

#or

code-push-standalone release ls <App name>

์ตœ๊ทผ ๋ฆด๋ฆฌ์ฆˆ ๋œ ๊ธฐ๋ก ํ™•์ธ

code-push-standalone deployment history <App name> Staging --numReleases 50

deployment key ํ™•์ธ

code-push-standalone deployment ls <App name> -k

disable

# ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „ ๋น„ํ™œ์„ฑํ™”
code-push-standalone patch <App name> Staging --disabled true

#or

# ์˜ˆ์‹œ: Staging ๋ฐฐํฌ์—์„œ v5 ๋ฆด๋ฆฌ์ฆˆ ๋น„ํ™œ์„ฑํ™”
code-push-standalone patch <App name> Staging v5 --disabled

# Production ๋ฐฐํฌ์—์„œ ๋น„ํ™œ์„ฑํ™”
code-push-standalone patch <App name> Production v5 --disabled

0๊ฐœ์˜ ๋Œ“๊ธ€