Firebase-tools: ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์—์„œ๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2018๋…„ 08์›” 17์ผ  ยท  18์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: firebase/firebase-tools

๋ฒ„์ „ ์ •๋ณด

"firebase-tools": "4.1.1"

ํ”Œ๋žซํผ ์ •๋ณด

OS X ๋ฐ Bitbucket ํŒŒ์ดํ”„๋ผ์ธ CI

์žฌํ˜„ ๋‹จ๊ณ„

Bitbucket ํŒŒ์ดํ”„๋ผ์ธ CI์—์„œ env ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ ์‚ฌ์šฉ
firebase use myproject
firebase deploy , index.js์— 5๊ฐœ์˜ ํ•จ์ˆ˜ ํฌํ•จ

_๋‚˜์ค‘์— ํ™๋ณด_
firebase deploy index.js์— ๋‹จ 4๊ฐœ์˜ ํ•จ์ˆ˜ ํฌํ•จ

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

  1. ์ „์ฒด Firebase ๋ฐฐํฌ๋Š” ๋” ์ด์ƒ ์ตœ์‹  index.js์— ์—†๋Š” "5๋ฒˆ์งธ" ํ•จ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  2. ์ˆ˜๋™ ๋‹จ๊ณ„/CLI ๋ช…๋ น์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ด์ „ ๋ฒ„์ „์˜ Firebase ๋„๊ตฌ์—์„œ์™€ ๊ฐ™์ด).

์‹ค์ œ ํ–‰๋™

Error: The following functions are found in your project but do not exist in your local source code:
... ๊ธฐ๋Šฅ ๋ชฉ๋ก ...
Aborting because deletion cannot proceed in non-interactive mode. To fix, manually delete the functions by running:

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

๋ฌผ๋ก : ์šฐ๋ฆฌ๋Š” ์ง€์†์ ์œผ๋กœ ์ด์ „ ๊ธฐ๋Šฅ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๊ณ  ์ž์ฃผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: onCall์— ๋Œ€ํ•ด https onRequest ๊ต์ฒด). ์ด์ „ ๊ธฐ๋Šฅ์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ๊ธฐ๋Šฅ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์‚ฌ๋ผ์ง€๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
๋งค์ฃผ ๊ธฐ๋Šฅ์„ ์‚ญ์ œํ•˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ์ด์ œ๋Š” CI๋ฅผ ํ†ตํ•ด ์‚ญ์ œํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ณ‘ํ•ฉ ๋ฐ ์ž๋™ ๋ฐฐํฌ ์ „์— ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด ๊ฒ€ํ† ์— ์ˆ˜๋™ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋˜ํ•œ ์ตœ์†Œํ•œ ๋‘ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ๋•์…˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
firebase deploy --allow-deletes ์™€ ๊ฐ™์€ ํ•ญ๋ชฉ์ด ์žˆ๊ณ  ์ข‹์€ ๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ์ „์ฒด Dev ํŒ€์ด ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ๋žฉํ†ฑ์—์„œ ํ”„๋กœ๋•์…˜ CLI๋ฅผ ์—ด ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋ฌด์—‡์ด๋“  ์ž์œ ๋กญ๊ฒŒ ์ƒ์„ฑ/์—…๋ฐ์ดํŠธ/์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ.

๊ธฐ๋ณธ๊ฐ’์ด ์‚ญ์ œ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์šฐ๋ฆฌ์ฒ˜๋Ÿผ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ์ฒ ์ €ํžˆ ๊ฒ€ํ† ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์—์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅ/์ฐจ๋‹จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค.

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

์•ˆ๋…•ํ•˜์„ธ์š”. CLI๊ฐ€ ์ž๋™์œผ๋กœ ๊ธฐ๋Šฅ์„ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ์‹์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š”๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋งŽ์ด ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์˜๋„์ ์ธ ๋™์ž‘์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด์ œ ๋น„๋Œ€ํ™”ํ˜•์—์„œ๋Š” ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์‚ญ์ œ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋™์ž‘์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์š” ๋ฒ„์ „ ๋ฒ”ํ”„์ธ ์ด์œ ์ž…๋‹ˆ๋‹ค.

@laurenzlong ์ด ๋น„๋Œ€ํ™”์‹ ๋ชจ๋“œ์—์„œ ์‚ญ์ œ๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด CLI์—์„œ ์ˆ˜๋™์œผ๋กœ ๊ธฐ๋Šฅ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ๊ฒ€ํ† /๋ณ‘ํ•ฉ ์ •์ฑ… + CI ๋ฐฐํฌ์— ๋น„ํ•ด ๋œ ์•ˆ์ „ํ•˜๊ณ  ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

๊ทผ๊ฑฐ๋ฅผ ์ข€ ๋” ํ™•์žฅํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? CI ์ค‘์— ๊ธฐ๋Šฅ์„ ์ž์ฃผ ์‚ญ์ œํ•ฉ๋‹ˆ๊นŒ?

๋ฌผ๋ก : ์šฐ๋ฆฌ๋Š” ์ง€์†์ ์œผ๋กœ ์ด์ „ ๊ธฐ๋Šฅ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๊ณ  ์ž์ฃผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: onCall์— ๋Œ€ํ•ด https onRequest ๊ต์ฒด). ์ด์ „ ๊ธฐ๋Šฅ์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ๊ธฐ๋Šฅ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์‚ฌ๋ผ์ง€๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
๋งค์ฃผ ๊ธฐ๋Šฅ์„ ์‚ญ์ œํ•˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ์ด์ œ๋Š” CI๋ฅผ ํ†ตํ•ด ์‚ญ์ œํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ณ‘ํ•ฉ ๋ฐ ์ž๋™ ๋ฐฐํฌ ์ „์— ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด ๊ฒ€ํ† ์— ์ˆ˜๋™ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋˜ํ•œ ์ตœ์†Œํ•œ ๋‘ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ๋•์…˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
firebase deploy --allow-deletes ์™€ ๊ฐ™์€ ํ•ญ๋ชฉ์ด ์žˆ๊ณ  ์ข‹์€ ๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ์ „์ฒด Dev ํŒ€์ด ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ๋žฉํ†ฑ์—์„œ ํ”„๋กœ๋•์…˜ CLI๋ฅผ ์—ด ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋ฌด์—‡์ด๋“  ์ž์œ ๋กญ๊ฒŒ ์ƒ์„ฑ/์—…๋ฐ์ดํŠธ/์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ.

๊ธฐ๋ณธ๊ฐ’์ด ์‚ญ์ œ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์šฐ๋ฆฌ์ฒ˜๋Ÿผ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ์ฒ ์ €ํžˆ ๊ฒ€ํ† ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ์—์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅ/์ฐจ๋‹จ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค.

ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Alan, ์ด์— ๋Œ€ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ํ† ๋ก ์„ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๋กœ๋ Œ ๐Ÿ™Œ

์ •ํ™•ํžˆ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋„ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ๋•Œ๋ฌธ์— Google Cloud Builder๋ฅผ ์‚ฌ์šฉํ•œ ์ž๋™ํ™”๋œ ๋ฐฐํฌ๋ฅผ ํฌ๊ธฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์ด๋ฏธ ์ œ์•ˆํ–ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์ด ์‚ญ์ œ๋˜๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํ•ญ์ƒ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์›ํ•˜๋Š” ์˜ต์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๊ธฐ๋Šฅ์ด ์—…๋ฐ์ดํŠธ๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ธฐ๋Šฅ ๋ถ„๊ธฐ์—์„œ ์ƒˆ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ firebase deploy --only functions:functionName ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•œ ๊ฒฝ์šฐ.
์ด๊ฒƒ์€ ํ”„๋กœ๋•์…˜ ์‚ฌ์šฉ์—์„œ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ˆ„๊ตฐ๊ฐ€ ์ƒˆ ๋ฒ„์ „์„ ๋ฐฐํฌํ•˜๋ ค๊ณ  ํ•˜๋ฉด CI ํŒŒ์ดํ”„๋ผ์ธ์ด ์‹œ์ž‘๋˜๊ณ  ๋ช…๋ น์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
firebase deploy --ignore-missing-functions , ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐฐํฌ๋Š” ๋ชจ๋“  ํ˜„์žฌ ๊ธฐ๋Šฅ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ functionName ๊ธฐ๋Šฅ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด์ „ ํ–‰๋™์„ ๋˜๋Œ๋ฆฌ๋Š” ๋ฐ ํ”Œ๋ž˜๊ทธ์˜ ์ด์ ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋‘ ๊ฐ€์ง€ ํ–‰๋™ ๋ชจ๋‘ ๋‚ด ์˜๊ฒฌ์œผ๋กœ๋Š” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ƒฅ ๋ฌด์‹œํ•˜์‹ญ์‹œ์˜ค.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋งŽ๊ณ  ์กฐ์‚ฌ ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ prod์—์„œ dev ํ”„๋กœ์ ํŠธ๋กœ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— json ๊ฐ€์ ธ์˜ค๊ธฐ ์ค‘์— ๋ชจ๋“  ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— dev ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‹ค์ œ๋กœ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ๋ชจ๋“  index.js๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  dev์— ๋ฐฐํฌํ•œ ๋‹ค์Œ json์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋ณด๊ณ ๋œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์กฐ์‚ฌ.

์—…๋ฐ์ดํŠธ๋œ CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๋‹ค ์นœ์ˆ™ํ•œ ๋ฐฉ์‹์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ๋ณด๋‚ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฐฐ์น˜์—์„œ CLI์—์„œ ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์šฐ๋ฆฌ๊ฐ€ ์˜์กดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@laurenzlong ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ณง ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ๊ฐ•์ œ๋กœ ์‚ญ์ œํ•˜๋Š” ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋“ค์—ˆ๊ณ  ์ด๊ฒƒ์ด ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋™์ž‘์€
๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

2018๋…„ 10์›” 12์ผ ๊ธˆ์š”์ผ ์˜ค์ „ 5:06 ์†”๋กœ๋ชฌ ์—ฅ๊ฒ” < [email protected] ์ž‘์„ฑ:

@laurenzlong https://github.com/laurenzlong ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/firebase/firebase-tools/issues/877#issuecomment-429303503 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAAD_npvEeL-UEG_Q5YNtNylQCi_9hKKks5ukIWtgaJpZM4WCBfg
.

@mbleigh firebase deploy ์‹คํ–‰ํ•  ๋•Œ ์–ด๋–ค ๊ธฐ๋Šฅ๋„ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ 2๊ฐœ์˜ ๋ณ„๋„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์žˆ๊ณ  ๋ชจ๋‘ ๋™์ผํ•œ Functions ํ”„๋กœ์ ํŠธ์— ๋ฐฐํฌ๋˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์˜ˆ:
๋‚˜๋Š” repos๊ฐ€์žˆ๋‹ค

  • "ํ”„๋ก ํŠธ์—”๋“œ", ๋‹ค์Œ ๊ธฐ๋Šฅ ํฌํ•จ:

    • ์–ธ์–ด ๋ฆฌ๋””๋ ‰ํ„ฐ

  • "๋ฐฑ์—”๋“œ":

    • ์‚ฌ์šฉ์ž ์ธ์ฆ๋จ

์ด์ œ "ํ”„๋ก ํŠธ์—”๋“œ" ์ €์žฅ์†Œ์—์„œ firebase deploy ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด languageRedirector ๋งŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
"๋ฐฑ์—”๋“œ" ์ €์žฅ์†Œ์—์„œ firebase deploy ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด onUserAuthenticated ๋งŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๊ฒŒ ๊ฐ€๋Šฅํ•ด?

@IchordeDionysos ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ๋™์•ˆ ๊ธฐ๋Šฅ์„ ๊ฒ€์‚ฌํ•˜์—ฌ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ๊ณผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์—์„œ ํ•˜๋‚˜๊ฐ€ "๋ˆ„๋ฝ"๋œ ๊ฒฝ์šฐ CLI์—์„œ ์‚ญ์ œ๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ #999๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? :)
ํ˜„์žฌ CI ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ด ์˜ต์…˜ ์—†์ด๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜ต์…˜์ด ์ •๋ง ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค...

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

@IchordeDionysos ๊ทธ๋™์•ˆ --only functions:[function] ์—์„œ firebase deploy --only functions:[function] ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CI๋ฅผ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://firebase.google.com/docs/cli/#deploy_specific_functions ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Google Cloud Builder๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” "ํ•ดํ‚น"์ž…๋‹ˆ๋‹ค(๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ ์‚ญ์ œํ•˜์ง€ ์•Š์Œ).

echo "n\n" | firebase deploy --only functions --interactive --token $FIREBASE_TOKEN

๋˜ํ•œ ์ ˆ๋Œ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์งˆ๋ฌธ์— ์˜์กดํ•˜๊ธฐ ๋ณด๋‹ค๋Š” --no-delete ์™€ ๊ฐ™์€ ๋ช…์‹œ์ ์ธ ์˜ต์…˜์ด ์žˆ์œผ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜

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