Firebase-tools: ํ˜ธ์ŠคํŒ…:์ฑ„๋„:๋ฐฐํฌ: ํ˜ธ์ŠคํŒ… ๊ตฌ์„ฑ์—๋Š” "์‚ฌ์ดํŠธ" ๋˜๋Š” \"๋Œ€์ƒ\"๋งŒ ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋ฉฐ ๋‘˜ ๋‹ค ํฌํ•จํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 10์›” 27์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: firebase/firebase-tools

๋Œ€์ƒ์ด ์žˆ๋Š” ๋‹ค์ค‘ ์‚ฌ์ดํŠธ ๊ตฌ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. npx firebase-tools deploy --only hosting ๋˜๋Š” npx firebase-tools deploy --only hosting:bbbb ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ƒˆ GitHub ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ ์ค„์—์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

 /usr/local/bin/npx firebase-tools hosting:channel:deploy pr22-blah --expires 30d --project blah-dev --json

๊ฐ™์€ ๊ฒƒ์„ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•˜๋ฉด ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ npx firebase-tools hosting:channel:deploy pr22-blah --only bbb --expires 30d --project blah-dev --json
{
  "status": "error",
  "error": "Hosting configs should only include either \"site\" or \"target\", not both."
}

์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•œ ๋ช…๋ น์€ --only bbb ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์€ ๊ทธ๊ฒƒ์˜ ์œ ๋ฌด์— ๊ด€๊ณ„์—†์ด ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‚ด firebase.json ์—๋Š” "site" ๊ฐ€ ์ „ํ˜€ ๋‚˜์—ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฐธ์กฐ:

.firebaserc:

{
  "projects": {
    "default": "blah-dev",
    "dev": "blah-dev",
    "prod": "blah-io"
  },
  "targets": {
    "blah-io": {
      "hosting": {
        "aaa": [
          "blah-aaa"
        ],
        "boilerplate": [
          "blah-boilerplate"
        ],
        "bbb": [
          "blah-bingo"
        ]
      }
    },
    "blah-dev": {
      "hosting": {
        "aaa": [
          "blah-aaa-dev"
        ],
        "boilerplate": [
          "blah-boilerplate-dev"
        ],
        "bbb": [
          "blah-bbb-dev"
        ]
      }
    }
  }
}

Firebase.json

{
  "firestore": {...},
  "database": {...},
  "functions": {...},
  "hosting": [
    {
      "target": "aaa",
      "public": "packages/aaa/build",
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
      "rewrites": [
        {
          "source": "**",
          "destination": "/index.html"
        }
      ]
    },
    {
      "target": "boilerplate",
      "public": "packages/boilerplate/build",
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
      "rewrites": [
        {
          "source": "**",
          "destination": "/index.html"
        }
      ]
    },
    {
      "target": "bbb",
      "public": "packages/bbb/build",
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
      "rewrites": [
        {
          "source": "**",
          "destination": "/index.html"
        }
      ]
    }
  ],
  "emulators": {...}
}

[ํ•„์ˆ˜] ํ™˜๊ฒฝ ์ •๋ณด

Firebase ๋„๊ตฌ: . npx firebase-tools --version -> 8.14.0

ํ”Œ๋žซํผ: OSX, GitHub Actions ๊ธฐ๋ณธ ์ด๋ฏธ์ง€

[ํ•„์ˆ˜] ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค

์œ„ ์ฐธ์กฐ.

[ํ•„์ˆ˜] ์žฌํ˜„ ๋‹จ๊ณ„

์œ„ ์ฐธ์กฐ. ํ˜ธ์ŠคํŒ…:์ฑ„๋„ :๋ฐฐํฌ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค

[ํ•„์ˆ˜] ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

๋ฐฐํฌ

[ํ•„์ˆ˜] ์‹ค์ œ ํ–‰๋™

{
  "status": "error",
  "error": "Hosting configs should only include either \"site\" or \"target\", not both."
}

( --debug ํ”Œ๋ž˜๊ทธ๋Š” ์ „๋ฉด์— ๋งŽ์€ HTTP ๋กœ๊น… ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€๋งŒ ๋ชจ๋‘ 200์ดˆ์ž…๋‹ˆ๋‹ค.)

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ์–ด ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๋ณด๋‚ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ์–ด ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๋ณด๋‚ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฑ„๋„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Firebase ๋ฐฐํฌ --only ํ˜ธ์ŠคํŒ…๋งŒ ์‚ฌ์šฉํ•  ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.. ์ง€์  ์ด๋ฆ„์œผ๋กœ ์‚ฌ์ดํŠธ์™€ ๋Œ€์ƒ์ด ์žˆ๋Š” gitlab runner์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
firebase deploy --only hosting:$CI_COMMIT_REF_SLUG -m "Tag $TAG Pipeline $CI_PIPELINE_ID, build $CI_BUILD_ID" --non-interactive

@Mistic92 ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ์žฌ์ƒ์‚ฐ ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋œ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰