"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๊ฐ์ ํจ์ ํฌํจ
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:
์๋ ํ์ธ์. 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
์ ๊ฐ์ ๋ช
์์ ์ธ ์ต์
์ด ์์ผ๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๐
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฌผ๋ก : ์ฐ๋ฆฌ๋ ์ง์์ ์ผ๋ก ์ด์ ๊ธฐ๋ฅ์ ๋ฆฌํฉํ ๋งํ๊ณ ์์ฃผ ๊ต์ฒดํฉ๋๋ค(์: onCall์ ๋ํด https onRequest ๊ต์ฒด). ์ด์ ๊ธฐ๋ฅ์ ์ญ์ ํ๊ณ ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค. ๋๋๋ก ์ฐ๋ฆฌ๋ ๋จ์ํ ๊ธฐ๋ฅ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๊ณ ์ฌ๋ผ์ง๊ธฐ๋ฅผ ์ํฉ๋๋ค.
๋งค์ฃผ ๊ธฐ๋ฅ์ ์ญ์ ํ์ง๋ ์๊ฒ ์ง๋ง ์ด์ ๋ CI๋ฅผ ํตํด ์ญ์ ํ ์ ์์ผ๋ฏ๋ก ๋ณํฉ ๋ฐ ์๋ ๋ฐฐํฌ ์ ์ ์๋์ผ๋ก ์ญ์ ํ๊ธฐ ์ํด ๊ฒํ ์ ์๋ ๋จ๊ณ๋ฅผ ์ถ๊ฐํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋ํ ์ต์ํ ๋ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ํ๋ก๋์ ๊ธฐ๋ฅ์ ๋ํ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
firebase deploy --allow-deletes
์ ๊ฐ์ ํญ๋ชฉ์ด ์๊ณ ์ข์ ๊ฒํ ํ๋ก์ธ์ค๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ ์ ์ฒด Dev ํ์ด ๋ด๊ฐ ์์ ํ๋ ๋์ ๋ฉํฑ์์ ํ๋ก๋์ CLI๋ฅผ ์ด ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฌด์์ด๋ ์์ ๋กญ๊ฒ ์์ฑ/์ ๋ฐ์ดํธ/์ญ์ ํ ์ ์์ต๋๋ค. ๋ ๋ค๋ฅธ.๊ธฐ๋ณธ๊ฐ์ด ์ญ์ ๋์ง ์๋ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ง๋ง ๋น๋ํํ ๋ชจ๋์์ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ์ฐ๋ฆฌ์ฒ๋ผ ๋ฐฐํฌํ๊ธฐ ์ ์ ์ฒ ์ ํ ๊ฒํ ํ๋ค๊ณ ๊ฐ์ ํ ๋ ๋น๋ํํ ๋ชจ๋์์๋ ๋ถ๊ฐ๋ฅ/์ฐจ๋จ๋์ง ์๋๋ค๋ ์ฌ์ค์ ๋๋์ต๋๋ค.