3.15.0
1ã€ã®é¢æ°ã ãã§åçŽãªfunctions
ãã£ã¬ã¯ããªãäœæããŸãã
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.ping = functions.https.onRequest((req, res) => {
res.status(200).send('pong');
}
次ã«ã firebase deploy --only functions
ã䜿çšããŠãããã€ããŸãã
ããéãå±éããŸãã ããã§ãå°ããªé¢æ°ãã¡ã€ã«ããããã€ããã®ã«æ°åããããŸãã ããããã¹ãã£ã³ã°ã®ã¢ããããŒã/ãããã€ãšæ¯èŒãããšãããªãé«éã§ã1ã€ã®ãã¡ã€ã«ããã¯ããã«å€ããªããŸãã
ã¢ããããŒã/ãããã€ã«éåžžã«æéãããããŸãã preparing functions directory for uploading...
ãã§ãŒãºäžã«ãã³ã°ããŸãã
firebase deploy --only functions
ã®ãããã°ãã°ïŒ
_åçŸã¹ãããã§å¥ã®é¢æ°ã䜿çšããããšã«æ³šæããŠãã ããããã ããåãèãã§ããæ°è¡ã®ã³ãŒããããªãå°ããªé¢æ°ã§ãã_
> firebase deploy --only functions --debug
[2017-11-14T10:03:55.799Z] ----------------------------------------------------------------------
[2017-11-14T10:03:55.804Z] Command: C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\firebase-tools\bin\firebase deploy --only functions --debug
[2017-11-14T10:03:55.806Z] CLI Version: 3.15.0
[2017-11-14T10:03:55.806Z] Platform: win32
[2017-11-14T10:03:55.806Z] Node Version: v6.11.1
[2017-11-14T10:03:55.807Z] Time: Tue Nov 14 2017 04:03:55 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:55.807Z] ----------------------------------------------------------------------
[2017-11-14T10:03:55.826Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2017-11-14T10:03:55.827Z] > authorizing via signed-in user
[2017-11-14T10:03:55.831Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/projects/marktec-itesm
Tue Nov 14 2017 04:03:55 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:56.230Z] <<< HTTP RESPONSE 200 server=nginx, date=Tue, 14 Nov 2017 10:03:57 GMT, content-type=application/json; charset=utf-8, content-length=108, connection=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store
[2017-11-14T10:03:56.232Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/database/marktec-itesm/tokens
Tue Nov 14 2017 04:03:56 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:56.622Z] <<< HTTP RESPONSE 200 server=nginx, date=Tue, 14 Nov 2017 10:03:57 GMT, content-type=application/json; charset=utf-8, content-length=262, connection=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store
=== Deploying to 'marktec-itesm'...
i deploying functions
[2017-11-14T10:03:57.040Z] > [functions] package.json contents: {
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"serve": "firebase serve --only functions",
"shell": "firebase experimental:functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"dependencies": {
"firebase-admin": "~5.4.2",
"firebase-functions": "^0.7.1"
},
"private": true
}
i functions: ensuring necessary APIs are enabled...
i runtimeconfig: ensuring necessary APIs are enabled...
[2017-11-14T10:03:57.043Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/cloudfunctions.googleapis.com/projectSettings/marktec-itesm?view=CONSUMER_VIEW
Tue Nov 14 2017 04:03:57 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:57.044Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/runtimeconfig.googleapis.com/projectSettings/marktec-itesm?view=CONSUMER_VIEW
Tue Nov 14 2017 04:03:57 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:57.479Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:03:58 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
+ functions: all necessary APIs are enabled
[2017-11-14T10:03:57.488Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:03:58 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
+ runtimeconfig: all necessary APIs are enabled
[2017-11-14T10:03:57.489Z] >>> HTTP REQUEST GET https://appengine.googleapis.com/v1/apps/marktec-itesm
Tue Nov 14 2017 04:03:57 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:57.490Z] >>> HTTP REQUEST GET https://apikeys.googleapis.com/v1/projects/marktec-itesm/apiKeys
Tue Nov 14 2017 04:03:57 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:57.775Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:03:58 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:03:57.950Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:03:58 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
i functions: preparing functions directory for uploading...
[2017-11-14T10:05:52.258Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/marktec-itesm/configs
Tue Nov 14 2017 04:05:52 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:05:52.676Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:05:53 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
i functions: packaged functions (22.1 KB) for uploading
[2017-11-14T10:06:01.593Z] >>> HTTP REQUEST GET https://www.googleapis.com/storage/v1/b/staging.marktec-itesm.appspot.com
Tue Nov 14 2017 04:06:01 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:01.940Z] <<< HTTP RESPONSE 200 x-guploader-uploadid=AEnB2UpSfip_C_K1wvCJaLNVW1q05_zW3D3fph0U7sYHr6_9M5InFI0Pi_X1VFc8B5PpbZImDdZiAaZZLqWXdl-JxdzedIZeExTeX4ifDbfvg7G8tsjPm1Y, etag=CAE=, vary=Origin, X-Origin, content-type=application/json; charset=UTF-8, expires=Tue, 14 Nov 2017 10:06:02 GMT, date=Tue, 14 Nov 2017 10:06:02 GMT, cache-control=private, max-age=0, must-revalidate, no-transform, content-length=548, server=UploadServer, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", connection=close
[2017-11-14T10:06:01.942Z] >>> HTTP REQUEST POST https://www.googleapis.com/upload/storage/v1/b/staging.marktec-itesm.appspot.com/o?uploadType=media&name=firebase-functions-source ReadStream {
_readableState:
ReadableState {
objectMode: false,
highWaterMark: 65536,
buffer: BufferList { head: [Object], tail: [Object], length: 1 },
length: 22627,
pipes: null,
pipesCount: 0,
flowing: null,
ended: true,
endEmitted: false,
reading: false,
sync: false,
needReadable: false,
emittedReadable: true,
readableListening: false,
resumeScheduled: false,
defaultEncoding: 'utf8',
ranOut: false,
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null },
readable: true,
domain: null,
_events: { end: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
path: 'C:\\Users\\benja\\AppData\\Local\\Temp\\firebase-functions-69565Vb7CkPZp0rr.zip',
fd: 6,
flags: 'r',
mode: 438,
start: undefined,
end: undefined,
autoClose: true,
pos: undefined,
bytesRead: 22627 }
Tue Nov 14 2017 04:06:01 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:02.601Z] <<< HTTP RESPONSE 200 x-guploader-uploadid=AEnB2UqV_ml27ZAt9W3ouCst97NUKPW4MeltDmxl06PA4sGBy6A8fqo0bAbEKHT0vokHMXo0t0yhOY0ve3XT0RrLjsiDwXyhwA, etag=CJPx8MbovdcCEAE=, vary=Origin, X-Origin, content-type=application/json; charset=UTF-8, cache-control=no-cache, no-store, max-age=0, must-revalidate, pragma=no-cache, expires=Mon, 01
Jan 1990 00:00:00 GMT, date=Tue, 14 Nov 2017 10:06:03 GMT, content-length=860, server=UploadServer, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", connection=close
+ functions: functions folder uploaded successfully
[2017-11-14T10:06:02.604Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/projects/marktec-itesm/locations/us-central1/functions
Tue Nov 14 2017 04:06:02 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:02.845Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:03 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
i functions: updating function verifyItesmDomain...
[2017-11-14T10:06:02.849Z] Trigger is: resource=projects/marktec-itesm, eventType=providers/firebase.auth/eventTypes/user.create
[2017-11-14T10:06:02.851Z] >>> HTTP REQUEST PUT https://cloudfunctions.googleapis.com/v1beta2/projects/marktec-itesm/locations/us-central1/functions/verifyItesmDomain { sourceArchiveUrl: 'gs://staging.marktec-itesm.appspot.com/firebase-functions-source',
name: 'projects/marktec-itesm/locations/us-central1/functions/verifyItesmDomain',
entryPoint: 'verifyItesmDomain',
timeout: '60s',
availableMemoryMb: 256,
labels: { 'deployment-tool': 'cli-firebase' },
eventTrigger:
{ resource: 'projects/marktec-itesm',
eventType: 'providers/firebase.auth/eventTypes/user.create' } }
Tue Nov 14 2017 04:06:02 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:03.064Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:03 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:03.068Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:03 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:03.257Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:04 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:05.262Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:05 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:05.428Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:06 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:07.431Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:07 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:07.603Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:08 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:09.606Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:09 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:09.755Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:10 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:11.757Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:11 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:11.912Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:12 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:13.913Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:13 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:14.078Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:14 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:16.080Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:16 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:16.249Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:17 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:18.252Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:18 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:18.405Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:19 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:20.406Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:20 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:20.588Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:21 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:22.591Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:22 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:22.753Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:23 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:24.768Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
Tue Nov 14 2017 04:06:24 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:24.952Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:25 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
+ functions[verifyItesmDomain]: Successful update operation.
+ Deploy complete!
Project Console: https://console.firebase.google.com/project/marktec-itesm/overview
æåºããŠãããŠããããšãïŒ å±éãé ãããšãæ©èœãšã¯ã¹ããªãšã³ã¹ã®å€§ããªåé¡ç¹ã§ããããšã¯ããã£ãŠãããããŸããŸãªæŠç¥ãéããŠè§£æ±ºã«åãçµãã§ããŸãã
@laurenzlong
Firebaseã®åå¿è
ãšããŠãç§ã¯äœããå°ç¡ãã«ããŠãããšæããŸããããããã€ã¯åžžã«_functionsïŒã¢ããããŒãçšã®functionsãã£ã¬ã¯ããªã®æºå..._ã®éšåã§åæ¢ããããã§ãã
åé¡ã解決ãããŸã§ãããã€ãã®è¿œå æ
å ±ïŒå®äºãŸã§ã«3ã5åããããªã©ïŒãæäŸãããšéåžžã«äŸ¿å©ã§ãã
åå¿è ãšããŠãç§ã¯èªåãäœãééã£ãããšãããŠãããšæã£ãŠãããããã£ã³ã»ã«ããããšã«äœåºŠãè²»ãããŸããã
åé¡ã¯æããã§ãã initã³ãã³ãã¯ã巚倧ãªãããŒãã¢ãžã¥ãŒã«ããã©ã«ããäœæããŸããã ç§ã®ãã·ã³ã§ã¯ã22,903ãã¡ã€ã«ã2,782ãã©ã«ããŒã§ãã ãã®ã³ãŒãã¯ããã®ãã¹ãŠãäžæãã©ã«ããŒã«ã³ããŒããŸãã
ãããç§ãããããšã§ãïŒ
prepareFunctionsUpload.jsã®26è¡ç®ïŒ
fs.copySyncïŒoptions.config.pathïŒoptions.config.getïŒ'functions.source'ïŒïŒãtmpdir.nameïŒ;
é¢æ°ãã©ã«ããŒã¯ãCLIã³ãã³ãinitã«ãã£ãŠäœæãããŸããã 次ã®ããã«ãªããŸãã
CLIã³ãã³ãinitããã®node_modulesãã©ã«ããŒãäœæããã¹ãã§ã¯ãªãã£ãããã«ç§ã«ã¯æããŸãã 165MBã®å€§ããã§ãã ããããã¹ãŠã®ãããžã§ã¯ãã«è¿œå ããã®ã¯äžåçã«æããŸãã
@thomasfischersm
ããã¯å®éã«ã¯åé¡ã§ã¯ãããŸããã 次ã®è¡ãããããããã«ãnode_modulesã¯äžæãã©ã«ããŒã«ã³ããŒãããŸããïŒ https ïŒ//github.com/firebase/firebase-tools/blob/master/lib/prepareFunctionsUpload.js#L76
firebase init
ã¯ããã¹ãŠã®ããŒãã¢ãžã¥ãŒã«ãé¢æ°ãœãŒã¹ãã©ã«ããŒå
ã«ããŒã«ã«ã«ã€ã³ã¹ããŒã«ããå¿
èŠããããŸããããããªããšãé¢æ°ãããŒã«ã«ã§æäŸã§ãããããªã¬ãŒæœåºãæ©èœããŸããïŒããã«ãããCLIã¯ã©ã®ã€ãã³ãããããããããªã¬ãŒããããç解ããŸãïŒããããé©åã«å±éã§ããããã«æ©èœããŸãïŒã
26è¡ç®ä»¥éã«ãããã°å°å·è¡ãé 眮ããŸããã ãã®è¡ã¯æ°åããããŸããã
次ã«ãã³ããŒãããŠãããã¡ã€ã«ãå°å·ããããã®ãã£ã«ã¿ãŒãè¿œå ããŸããã ãã¹ãŠã®node_modulesãã¡ã€ã«ãå«ãŸããŠããŸããã
次ã«ãnode_moduleãã¡ã€ã«ãé€å€ããããã«ãã£ã«ã¿ãŒãå€æŽããŸããã å±éã¯æ¥éã«é²ã¿ãŸããã ããããå°ãåŸãã¹ã¯ãªãããã¯ã©ãŠãæ©èœã®æ£ãããè©äŸ¡ããããšããŠããããã«èŠããŸããã ã©ã€ãã©ãªã®äŸåé¢ä¿ãæ¬ èœããŠããããããã®ã³ãŒãã¯å€±æããŸããã
ããªããæããŠãããœãŒã¹ã³ãŒãè¡ã¯åŸã®ã¹ãããã®ããã§ãã ã¯ã©ãŠãã«ã¢ããããŒãããåã«ããã¡ã€ã«ïŒnode_modulesãé€ãïŒãzipãã¡ã€ã«ã«ã¢ãŒã«ã€ããããŠããããã§ãã ãã®è¡ã¯ç§ã®ãã·ã³ã§ã¯é ãã¯ãªãããã§ãã
ã¯ãããã®éãã§ããç§ã¯ééã£ãŠããŸãããnode_modulesã¯ã³ããŒãããŸãã node_modulesãtempãã£ã¬ã¯ããªã«ã³ããŒããªãã®ã¯æå¹ãªèãã ãšæããŸãã ãããå°ãè€éã«ããŠããã®ã¯ãCLIãããªã¬ãŒè§£æã®åã«tempãã©ã«ããŒã«ã.runtimeconfig.jsonããæžã蟌ã¿ããã®ãã¡ã€ã«ãæ®ãã®é¢æ°ã®ãœãŒã¹ã³ãŒããšãšãã«ã¢ããããŒãããããããæžããããªãã£ããšããäºå®ã§ãããã®ãã¡ã€ã«ãå®éã®ãœãŒã¹ã³ãŒããã£ã¬ã¯ããªã«å ¥ããŸãã ãããã£ãŠãå±éé床ãåäžãããæå³ããªãå¯äœçšãçºçããªãããã«ããããã®åªãããœãªã¥ãŒã·ã§ã³ããããããããŸãããå°ãè©ŠããŠã¿ãå¿ èŠããããŸãã ãã«ãªã¯ãšã¹ãããæ°è»œã«ã©ããã
ç§ã¯åãåé¡ãæ±ããŠããŸãã ãŠãŒã¶ãŒãfirebase-toolsããã³ã°ããŠãããšæããªãããã«ãããã£ã¬ã¯ããªã®æºåäž...ãã®æé ã§ããã«ã¡ãã»ãŒãžãåºåããããšããå§ãããŸãã
ç·šéïŒããã¯UbuntuWSLã«ãããŸããã Linuxã§ã¯ããæºåããã§ãŒãºã¯ãã³ã°ããŸããã ãé¢æ°ã®äœæãã®ã¹ãããã¯é ããªãå¯èœæ§ããããŸããã以åã«çµéšããã»ã©ã§ã¯ãããŸããã
ãã®åé¡ã¯ãå°»ã®æ¬åœã®çã¿ã§ãã åªå 床ãé«ããã¹ãã ãšæããŸãïŒ/
ãããžã§ã¯ãã«Firebaseé¢æ°ãå®è£
ããããšããŠããŸããããã®ãšã©ãŒã®ããã«å»¶æããå¿
èŠããããŸããã
ãã®ãšã©ãŒã¯ç§ã«å€ãã®æéãç¡é§ã«ããŸããã
ããã«ä¿®æ£ãããããšãé¡ã£ãŠããŸãïŒ
ãã®åé¡ã¯å€§ããªé害ã§ãã äž»ã«ç§ãfirestoreã䜿çšããŠãããããã¢ã°ãªã²ãŒããã«ãŠã³ã¿ãŒããã¬ãŒã³ã¹ãªã©ã¯ã¯ã©ãŠãæ©èœã«ãã£ãŠã®ã¿é©åã«åŠçã§ããæ¯å5åéãã³ã°ããŸãã
@PulpoEnPatinetaããã¯ãšã©ãŒã§ã¯ãããŸããã ããã¯åã«ãããã€æéã®åé¡ã§ãã
@McStuffinsè»ã®é»æºãå ¥ããã®ã«5åãããå Žåãããã¯ãšã©ãŒã§ããããããšãåã«éå§æéã®åé¡ã§ããïŒ
ããã«å¯Ÿããä¿®æ£ã¯ãããŸããïŒ æ¬åœã«ãšãŠãé ãã§ãã
ç§ã¯æåãããã®åé¡ã远跡ããŠããŸããããCDãã»ããã¢ããããŠããŠããã¹ãŠã®äœæ¥ãè¡ã£ãŠãããã®ã§ãåé¡ã«ãªãããšã¯ãããŸããã§ããã ãŸããæ©èœãããã©ããããã¹ãããããã ãã«é¢æ°ããããã€ããããšããããŸããã ã ããåºæ¬çã«ã¯ç§ã«ã¯é¢ä¿ãããŸããã§ããã
ä»æ¥ãŸã§ãäºæããªãå¶éã«ééãããšãïŒé¢æ°ããããã€ã§ããªããªã£ããããæ¬çªç°å¢ãžã®ãããã€ã¡ã³ãã1æ¥ã®ã¯ã©ãŒã¿ïŒ12,000ç§ïŒãè¶ ããŸããã ããŸããŸãªããªã¬ãŒïŒpubsubãfirestoreãhttpsïŒãåããæ倧55åã®é¢æ°ããããŸãã æ±ãã«ã¯å€ãããŸããïŒ
ããã§ãã¢ããªã±ãŒã·ã§ã³ã2æ¥éãããã€ããå¿ èŠããããŸãïŒroflïŒïŒlollipopïŒïŒ+ 1ïŒïŒ1st_place_medalïŒïŒcoffinïŒïŒtadaïŒïŒtacoïŒïŒcactusïŒïŒdancerïŒïŒsmiling_impïŒ
æã ãç§ãå±éããŠãããšããããã¯éåžžã«é ãã§ãããããŠããããããã«ãç°å¢ã®ãšã©ãŒããšèšãèŠåãã¿ãŒããã«ã«ãããŸã
@srinurpäžèšã§ãªã³ã¯ãããã«ãªã¯ãšã¹ããã芧ãã ãããåé¡ã®äžéšã«å¯ŸåŠããŸãã ãŸããããã¯ãšã³ãããŒã ã¯ãåé¡ã®ä»ã®éšåã«å¯ŸåŠããããã«åãçµãã§ããŸãïŒãã ããããã¯éåžžã«è€éãªäœæ¥ãªã®ã§ããã°ãããåŸ ã¡ãã ããïŒã
@merlinnotãããã€ããšã«ãã¹ãŠã®é¢æ°ã®ã³ãŒããæŽæ°ããå Žåãé€ããŠã-onlyã³ãã³ãã䜿çšããŠåã ã®é¢æ°ãŸãã¯é¢æ°ã®ã°ã«ãŒãããããã€ããããšããå§ãããŸãã https://firebase.google.com/docs/cli/#partial_deploysãã芧ãã ããã
@McStuffins ããã«ãç°å¢ã®ãšã©ãŒãã¯éåžžãæ¬çªç°å¢ã®åé¡ã瀺ããŸãããã®å Žåã¯ã httpsïŒ //firebase.google.com/support/ã§ãµããŒããã±ãããæåºããŠãã ãããé²è¡äžã®æ¬çªç°å¢ã®åé¡ããããã©ããã¯ã Firebaseã¹ããŒã¿ã¹ããã·ã¥ããŒã
@laurenzlongãããã€ã¡ã³ãéã®åæ©èœã®å€æŽïŒäŸåé¢ä¿ã®è§£æ±ºãå«ãïŒãèªåçã«æ€åºããããã«CIãæ§æããå¿
èŠããããŸãã ãŸãããã¹ãŠã®é¢æ°ã§äœ¿çšããfirebase-functions
ã firebase-admin
ã lodash
ãªã©ã®ããã±ãŒãžãæŽæ°ãããšã©ããªããŸããïŒ
@merlinnotããã¯éåžžã«æ£åœãªãŠãŒã¹ã±ãŒã¹ã§ãã ãããã€ã®å²ãåœãŠã¯GoogleCloudFunctionsã«ãã£ãŠå¶åŸ¡ãããŸããå ¬éãããŠããåé¡ã®ãã©ãã«ãŒã«ãªã¯ãšã¹ããæåºããããšããå§ãããŸãïŒ https ïŒ//cloud.google.com/functions/docs/support
èå³ã®ãããã¹ãŠã®äººã®ããã«ïŒ https ïŒ//issuetracker.google.com/issues/71385193
@laurenzlongãœãŒã¹ãã³ããŒãããšãã«node_modules
ãã©ã«ããŒãç¡èŠããŠã npm install --production
ãŸãã¯yarn install --production
å®è¡ã§ããŸããïŒ ãããã®ããŒã«ã¯ãåã«ã³ããŒããŠè²Œãä»ãããããé«éãªå Žåãããããã§ãã
@horacehylee
ããã¯é倧ãªå€æŽã§ããå¯èœæ§ããããŸãã äžéšã®äººã
ïŒç§èªèº«ãå«ãïŒã¯ãçžå¯Ÿãã¹ïŒ "package-name"ïŒ "./externs/package.tgz"ãªã©ïŒã§ããã±ãŒãžãåç
§ããå ŽåããããŸããããã¯äž»ã«ããã©ã€ããŒããªããžããªã®ïŒçŸåšã¯ä¿®æ£ãããŠããïŒåé¡ãåå ã§ãã ããŒã«ã¯ãããããã¹ãŠã®ã³ãŒããŒã±ãŒã¹ãèæ
®ã«å
¥ããå¿
èŠããããŸãã
ãã1ã€ã¯ãã£ãã·ã¥ã§ããGoogleããŠãŒã¶ãŒã«ä»£ãã£ãŠããã±ãŒãžãããŠã³ããŒãããå Žåãå éšãã£ãã·ã¥ã¡ã«ããºã ãå®è£ ããå¿ èŠããããŸãã ç§ãã¡å šå¡ãã³ã³ãã¥ãŒã¿ãŒäžã«ããŒã«ã«ãã£ãã·ã¥ãæã£ãŠããã®ã§ïŒnpmãšyarnã®äž¡æ¹ã«ãã£ãã·ã¥ã¡ã«ããºã ããããŸãïŒããããã£ãŠnpmã®ãµãŒããŒã匷å¶çµäºããŸãã;ïŒ
äžéšã®äººã ã¯ãŸããå€éšã©ã€ãã©ãªã®ããã€ãã®å€æŽãåã«ãã¹ãããããšæããããããŸããã ãã©ãŒã¯ãäœæããå€æŽãå ããããã±ãŒãžãžã®åç §ãäžæçã«å€æŽãããããããã¡ã€ã«ãå€æŽããŠé¢æ°ããããã€ããæ¹ãã¯ããã«ç°¡åã§ã...
çµè«ïŒããã¯ããŸãæ©èœããŸããä»ã®ãŸãŸã«ããŠãããŸãïŒ+1ïŒ
@horacehylee@ merlinnot2ã»ã³ãããããšãããããŸãã https://github.com/firebase/firebase-tools/pull/578ãåç §ããŠãã ãããCLIã®æ¬¡ã®ãªãªãŒã¹ã§ã¯ãé¢æ°ã®ãœãŒã¹ãã©ã«ããŒã®æéãã³ããŒãããªããªããŸãã
1Gbpsã®ãã¡ã€ããŒæ¥ç¶äžã«ãã6ã€ã®4GHzã³ã¢ãã·ã³ã«5åç·ã1kbã®æ©èœãå±éããã®ã«æ°åãããFirebaseã§äœãã§ããã®ãããããããŸããã
ç§ã¯å°äŸ¿ãåã£ãŠããããã«èãããŸããããã¢ããããŒãçšã®ãã£ã¬ã¯ããªã®æºåãäžã«äœãèµ·ãã£ãŠããã®ãæ¬åœã«èå³ããããŸãã 誰ããå®éã«ç¥ã£ãŠããŸããïŒ
ããŒãã¢ãžã¥ãŒã«ãå«ãé¢æ°ãã£ã¬ã¯ããªãtmpãã£ã¬ã¯ããªã«ã³ããŒããŸãã
次ã®ãªãªãŒã¹ã§ã¯ããã«å¯ŸåŠãã以åã«ã³ããŒããå¿
èŠããªããªããŸã
å±éã
2018幎1æ7æ¥ãååŸ5æ5åã«[email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
Firebaseã§äœãã§ããã®ããæ°åã§ããããŸããã
6ã€ã®4GHzã³ã¢ãã·ã³ã«5åç·ã1kbã®æ©èœãå°å ¥ãã
1Gbpsãã¡ã€ããŒæ¥ç¶ãç§ã¯å°äŸ¿ãåã£ãŠããããã«èãããŸãããç§ã¯æ¬åœã«äœã«èå³ããããŸã
ãã¢ããããŒãçšã®ãã£ã¬ã¯ããªã®æºåãäžã«é²è¡äžã§ãã 誰ããå®éã«ç¥ã£ãŠããŸããïŒâ
ãã®ã¹ã¬ããã«ãµãã¹ã¯ã©ã€ãããŠããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/firebase/firebase-tools/issues/536#issuecomment-355868154 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAAD_nUptJWFuYGvEXI0MwmQR-bG9_MKks5tIWm1gaJpZM4QdF3g
ã
@mbleigh
ããã ãã ãªãã»ã©ãã ã¯ãŒã¯ã¹ããŒã·ã§ã³ã1ã2åçã£ãŠããŸãã®ãèŠãã®ã¯äžçš®ã®ã³ã¡ãã£ã§ããã次ã®è¡ã«ãããã±ãŒãžåãããé¢æ°ïŒ 37.55kb !!!ïŒãã¢ããããŒãããããã«æ£åžžã«ããåºåãããã ãã§ãã
次ã®ãªãªãŒã¹ã楜ãã¿ã«ããŠããŸãã å¿çããããã®Thxã
Hã
19æ¥ç®ãFirebaseã¯ãŸã ãããã€äžã§ãã *ãããã³ãŒã³ãã€ãã*
ããã
次ã®ãªãªãŒã¹ã¯ãã€äºå®ãããŠãããå±éæéã®äœïŒ ã®æ¹åãæåŸ ã§ããŸããïŒ
ãã®éãé²ã¿ç¶ãããã©ãããç¥ãããã ãã«ã
ãªãªãŒã¹ã¯ä»é±è¡ãããäºå®ã§ããããæºåäž
ãããã€ããããã®é¢æ°ãã£ã¬ã¯ããªãã®æé ã倧å¹
ã«é«éåããŸãïŒç§ã¯ããŸãã
æ£ç¢ºãªæ°ããããŸãïŒã ãããã€ã®ä»ã®éšåã¯å€æŽãããŸããã
2018幎1æ15æ¥æææ¥12:42PMã«[email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãïŒ
ããã
次ã®ãªãªãŒã¹ã¯ãã€äºå®ãããŠãããå±éã¯äœïŒ æ¹åãããŸãã
äœåæåŸ ãã¹ãã§ããïŒãã®éãé²ã¿ç¶ãããã©ãããç¥ãããã ãã«ã
â
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãããã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/firebase/firebase-tools/issues/536#issuecomment-357784792 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAAD_vaj-WngS9dMj7j5Q2AesM0tNMvVks5tK7hBgaJpZM4QdF3g
ã
ããããªãªãŒã¹ãããŸããïŒ
@mbleighããã¯ãªãªãŒã¹3.17.4ã«ãããŸããïŒ
@jkossis v3.17.0
ãªãªãŒã¹ããŒãããïŒ
é¢æ°ããããã€ããå Žåã¯ãé¢æ°ãã£ã¬ã¯ããªå ã§ãnpm i --save firebase-functions @ latest ããå®è¡ããŠãfirebase-functionsSDKãææ°ã®ãã®ã«æŽæ°ããå¿ èŠããããŸãã ããã«ãããæ©èœã®å±éãé«éåãããŸãã
åããç§ãŸã§ïŒãç²ãæ§ã§ããïŒ
ç§ã«ãšã£ãŠãããã¯ãŸã æ°åããããŸãã
[email protected]
ãš[email protected]
ããããŸãã ãã®åé¡ãããã«ãããã°ããããã«äœãã§ããŸããïŒ
ããã¯ãé¢æ°ã®ã¿ããããã€ãããšãã®åºåã§ãã ååãå€æŽããŸããããRESTãšã³ããã€ã³ããããŒã¿ããŒã¹ãèªèšŒããªã¬ãŒã®çµã¿åããã§ãã
â functions git:(master) â firebase --version
3.17.4
â functions git:(master) â time firebase deploy --only functions
=== Deploying to 'XXX'...
i deploying functions
i functions: ensuring necessary APIs are enabled...
â functions: all necessary APIs are enabled
i functions: preparing functions directory for uploading...
i functions: packaged functions (123.07 KB) for uploading
â functions: functions folder uploaded successfully
i functions: updating function 1...
i functions: updating function 2...
i functions: updating function 3...
i functions: updating function 4...
i functions: updating function 5...
i functions: updating function 6...
â functions[1]: Successful update operation.
Function URL (1): https://us-central1-XXX.cloudfunctions.net/1
â functions[3]: Successful update operation.
â functions[4]: Successful update operation.
â functions[5]: Successful update operation.
â functions[6]: Successful update operation.
â functions[2]: Successful update operation.
Function URL (2): https://us-central1-XXX.cloudfunctions.net/2
â Deploy complete!
Project Console: https://console.firebase.google.com/project/XXX/overview
firebase deploy --only functions 4.59s user 1.07s system 1% cpu 6:09.26 total
@adamdurenä¿®æ£ã¯ã preparing functions directory for uploading...
ã§è²»ããããé床ã®æéã«å¯Ÿãããã®ã§ãã
ãããã€èªäœã¯ãŸã ããªãé·ãæéããããå¯èœæ§ããããŸãã
åãç¶æ³ã§ã¹ã¿ãã¯ããŸãã
"firebase-admin": "^5.8.2",
"firebase-functions": "^0.8.1",
npm install -g npm@latest
ã¯ç§ã«ãããã«ç°ãªãå
¥åãäžããŸããããããŠfirebase-cli
ãåé€ããããšãäœããå€ããããã§ããã
ã¢ããããŒãïŒ
ããŠã npm install -g firebase-tools
ãå®è¡ããåŸãããã¯ã€ãã«æ©èœããŸããã https://stackoverflow.com/questions/48531993/firebase-config-variables-are-not-available-error-with-deploying-functions#comment84098334_48531993ãžã®ç§°è³
ããã«ã¡ã¯ãåãæç¹ã§åé¡ãçºçããŠããŸãïŒãé¢æ°ãã£ã¬ã¯ããªã®æºå..ãïŒ
ãããç§ã®å Žåãå®äºããã®ã«25/30å以äžããããŸãã
çŽ2.20MBã®å§çž®ããã4ã€ã®ãã©ã€ããŒãäŸåé¢ä¿ããããŸã
å§çž®ãã¡ã€ã«ãšããŠãã©ã€ããŒãäŸåé¢ä¿ãå«ããå¯äžã®æ¹æ³ã§ããããšãããããŸããã
ç§ã¯äœãééã£ãããšãããŠããŸããïŒ ãããšãããããæ©èœããã¯ãã§ããïŒ
2018-5-9
firebase deploy
ãŸã é
ããçç±ã¯ããããªã
æåŸã®ããŒãžã§ã³ã«æŽæ°ããŸãããïŒ å é±æŽæ°ããŸãããããããã€ã«ã¯1ã3åããããŸãïŒ25/30ããïŒ
次ã®ãããªåçŽãªãã®ã®å Žåããããã€æéã¯4å以äžã«ãªããŸãã
const functions = require('firebase-functions')
exports.test = functions.https.onRequest((req, res) => {
res.send('Hello World')
})
i functions: updating function test...
ã¯ã¶ãäžãã£ãŠããç·ã§ãã
ãã€ãŠã¯ãããªã«é
ãããšã¯ãããŸããã§ããïŒ
@Robulaææ°ããŒãžã§ã³ã®firebase-toolsã«ã¢ããããŒãããŸãããïŒ
ã¯ããããæããŸãã firebase âversion
ã¯3.18.6ãå ±åããŸãã
ããªãã¯ç§ãããæ°ããããŒãžã§ã³ã䜿çšããŠããŸãã 3.18.6ã§node_modulesãã©ã«ããŒãå床転éãç¶ãããã©ããã¯ããããŸãããã3.18.4ã§ã¯ããã¹ãŠãæ£åžžã«å®è¡ãããŠããããã§ã...
æè¿ã®firebase-toolsããŒãžã§ã³ã§ã¯ãããã€æŠç¥ã«ååž°ã¯ãããŸããã§ããïŒnode_modulesãã©ã«ããŒã¯ã³ããŒãããŸããïŒãããããã€æéããã·ã³ããšã«ããŸãæã ç°ãªããŸãã é¢æ°ã®æåã®ãããã€ãããã®åŸã®æŽæ°ãããé ããªããŸãã
preparing functions directory for uploading...
ã¹ãããäžã®ãããã€æéã¯ãããŒã«ã«ã§å®è¡ããŠããå Žåããã®ã¹ãããã ãã§7åè¿ããããããšãããããŸãã ãã«ãã®äºåãããã€æé ã¯ãããŒã«ã«ã§çŽ5ç§ããããŸãã ãããã€ããã»ã¹ã®ä»ã®ãã¹ãŠã®ã¹ãããã¯ããããã°ããéåžžã«è¿
éã«å®è¡ãããŸãã ãããã€ã¯ããé
ããªãå¯èœæ§ããããŸãããäœæ¥ã«ã¯AWS lambdaã䜿çšããŠãããPythonããã±ãŒãžã®ã€ã³ã¹ããŒã«ãšãã«ããå«ããéåžžã«å€§èŠæš¡ãªã©ã ããããã€ã¯ãããããã¯ããã«é«éã§ã2ã2ã3åçšåºŠã§ãã
Google Cloud Buildãããããã€ããå Žåã§ããaws lambdaã§ã¯10ã20ç§ã§ããã®ã«å¯Ÿãã2ã3åããããŸãã ã¢ããããŒãããåã«ãCLIãé¢æ°ãã©ã«ããŒå šäœãå§çž®ããã®ãã©ãããå°ãããã ãã§ãã
@laurenzlong ãé¢æ°ããã§ã«äžŠåã«ãããã€ãããŠãããã©ããããŸãã¯ãã®æé©åãé²è¡äžã§ãããã©ããã詳ãã説æããŠããã ããŸããïŒ
é¢æ°ã¯åžžã«äžŠè¡ããŠå±éãããŠããŸããã ãã ãã10åã®é¢æ°ã䞊è¡ããŠãããã€ããæ¹ããåäžã®é¢æ°ããããã€ãããããé ãããšã«æ³šæããŠãã ããã
+1é¢æ°ã®ãããã€ã¯éåžžã«é ãã§ãã cronãžã§ãã®ãã¥ãŒããªã¢ã«ã«åŸã£ãŠãæåã®ããŒã³ã§ããæ¯æãã£ãã¯é¢æ°ãäœæããŸãããæ¯åãããã€ããã®ã«1åã»ã©ããããŸãã
@laurenzlongã®è¿ä¿¡ã«æè¬ããFirebaseã§ã®ããŒãã¯ãŒã¯ã«æè¬ããŸãã
å±éæéãæ¹åããããã®ã¢ã¯ãã£ããªèšç»ã¯ãããŸããïŒ ç§ãã¡ã¯Firebaseã奜ãã§ããããããã€æéãé
ããããå®éã«ã¯Firebaseããé¢ããããšãèããŠããã®ã§è³ªåããŸãã çŽ47ã®ã¯ã©ãŠãæ©èœãããããããã€ã«ã¯éåžž3ã6åããããŸãã ãããgit push heroku master
ãšæ¯èŒããŠãã ãããããã¯ãåãããªã¥ãŒã ã®ã³ãŒããHerokuã«ãããã€ããã®ã«çŽ20ã30ç§ããããŸãã ãããŠããã®ã³ãŒãã¯Herokuã§å³åº§ã«å®è¡ãããŸãã Firebaseã§ã¯ããããã€åŸããããã€ãããé¢æ°ãå®éã«å®è¡ããããŸã§ã«ããã«20ã30ç§ïŒã©ã³ãã ïŒã®æéãåŸ
ã€å¿
èŠããããŸãïŒãã®éãæ°æ§ã®é¢æ°ãæ··åšããŠå®è¡ãããŸãïŒã
ãããã£ãŠãå±éãšã¯ã¹ããªãšã³ã¹ãæ¯èŒããŸãã
*** Heroku:
git push heroku master
20-30s later ...
All newly-deployed functions are now running in a consistent/atomic way
*** Firebase:
firebase deploy --only functions
180-360s later ...
Functions are deployed but only some of the new ones are running, some old ones are still running
20-30s later ...
All new functions running
ãŸããFirebaseã䜿çšããŠã¢ãããã¯ãããã€ãè¡ãããšã¯å°é£ã§ãããããã€åŸãããã€ãã®æ°ããé¢æ°ïŒ v_n+1
ãšåŒã°ããïŒãå€ãé¢æ°v_n
ãšäžç·ã«å®è¡ãããŠããæéãããããã§ãã ãããã£ãŠãã¡ãžã£ãŒã¢ããããŒããè¡ãå Žåã¯ãç°ãªãããŒã¿åœ¢åŒãŸãã¯ã¢ã«ãŽãªãºã ã䜿çšããŠå®è¡ãããŠããæ°æ§ã®é¢æ°ãæ··åšããŠããŸãã ããã¯ããã¹ãŠã®æ°ããé¢æ°ããããã€ãããæ°ããé¢æ°ã®ã¿ãå®è¡ãããŠãããããŸã£ãããããã€ãããŠããªãHerokuãããã€ãããã¯ããã«å®å
šæ§ãäœããªããŸãã
ããã«ã47ã®é¢æ°ã®ããã€ããã次ã®ãããªãšã©ãŒã§ãããã€ã«å€±æããããšããããŸãã
â functions[retrieveFavorites(us-central1)]: Deployment error.
Server Error. getaddrinfo ENOTFOUND cloudfunctions.googleapis.com cloudfunctions.googleapis.com:443
ä¿¡é Œæ§ã®é«ã察称ã®ã¬ãããã€ã³ã¿ãŒãããã«å±éããŠãããããåé¡ã¯ãããã¯ãŒã¯ã§ã¯ãããŸããã
ãããã£ãŠãHerokuã®ãããã€ã¯ã¢ãããã¯DBãã©ã³ã¶ã¯ã·ã§ã³ïŒãªãŒã«ãªã¢ããã·ã³ã°ïŒã®ãããªãã®ãšèããŠãã ãããäžæ¹ãFirebaseã®ãããã€ã¯ãçµææŽåæ§ã®ããéšåçãªé害ã«äŒŒãŠããŸã...ããã«ãããç¹ã«ãã°ä¿®æ£ãããã·ã¥ããå Žåãéçºãªãã¬ãŒã·ã§ã³ãã¯ããã«å°é£ã«ãªããŸããããŒãžã«å¿ããŠçå€äžã
ççŽã«èšã£ãŠãFirebaseã§ã®ãããã€ãšã¯ã¹ããªãšã³ã¹ã¯ãHerokuãAWSããã客芳çã«é ããä¿¡é Œæ§ãäœããªããŸã...誀解ããªãã§ãã ãããFirebaseã奜ãã§ããçããã®æžåœãªåªåã«å¿ããæè¬ããŠããŸãã ãããæ»æã®ããã«èããããšããæå³ã§ã¯ãããŸãããå人çãªããšã§ã¯ãããŸããããããã§Firebaseãæ¹åããå¿ èŠããããŸãããŸãã¯ãå±éãéåžžã«èŠçã§ãããããä»ã®å Žæã«ç§»åããããšãæ€èšããŠããŸãã
Firebaseã«ãååããã ãããããšãããããŸãã ç§ãã¡ã¯ããªãã®å©ãã«æè¬ããŸã:-)ã
ããŒã¿ãã€ã³ããå ±æããŠããã ãããããšãããããŸãã ç¹ã«åæã«å€ãã®é¢æ°ããããã€ããããã«ããããæ¹åããèšç»ãããã€ããããŸãïŒäž»ã«ãé¢æ°ãäœæ/æŽæ°ããããã®APIåŒã³åºããè¡ãããåŸã®ãµãŒããŒåŽã®ãã«ãã¹ããããæ¹åããŸãïŒã ãã ãããããã¯4åã®1ãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®å€æŽã§ããããããã°ãããåŸ ã¡ããã ããŸããããé¡ãããããŸãã
ãã§ã«ãããæ€èšããŠãããããããŸããããCI / CDãã€ãã©ã€ã³ã§ãç·šéãããé¢æ°ãæ€åºããã¹ã¯ãªãããäœæãã --only
ãã©ã°ãä»ããé¢æ°ã®ã¿ããããã€ã§ããŸãã ããã«ãããå±éé床ãåçã«åäžããŸãã äŸã«ã€ããŠã¯ããã®ãããªãåç
§ããŠãã ããïŒ https ://www.youtube.com/watch?v=iyGHW4UQ_Ts
@laurenzlongæ å ±ãããããšããããŒã¬ã³ã ãã ããå°ããªã¯ã©ãŠãæ©èœã¯1ã€ãããªããããæå°éã®å€æŽãå ããåŸã§ãããããã€ã«ã¯çŽ1åããããŸãã ã¯ã©ãŠãæ©èœã1ã€ãããªãã®ã«ããã®ãã©ã°ã䜿çšããŸãã ããã§äœãåé¡ãçºçããŠããããã§ãã
2019幎4æã®æç¹ã§ãŸã æåéãæ°åããããŸã-FirebaseããŒãžã§ã³6.6.0-ç§ãããŠããã®ã¯ã https ïŒ//firebase.google.com/docs/functions/get-startedã®ãã¥ãŒããªã¢ã«ã«åŸãããšã ãã§ãã
ããŠã³ããŒãããŠããfirebasedeployããå®è¡ãããã³ã«æ°åããããŸã
æ°é±éåã¯10ã15ç§ããã£ãŠããã®ã«ãããæ°æ¥ã¯ãã¹ãã£ã³ã°ã§ããå±éããã®ã«æ°åããããŸãã é¢æ°ã®ãããã€ãã¿ã€ã ã¢ãŠãããŸãã
ãŸããFirebaseã®ã¹ããŒã¿ã¹ããŒãžã¯ç·è²ã®https://status.firebase.google.com/ã§ãã
ãªããããèµ·ããã®ã誰ããç¥ã£ãŠããŸããïŒ
firebase-tools
7.0.0
ã䜿çšãã
$ firebase deploy --only=hosting --token xxx
=== Deploying to 'xxx'...
i deploying hosting
i hosting[xxx]: beginning deploy...
i hosting[xxx]: found 1959 files in public
â hosting[xxx]: file upload complete
i hosting[xxx]: finalizing version...
â hosting[xxx]: version finalized
i hosting[xxx]: releasing new version...
â hosting[xxx]: release complete
â hosting: Finished running postdeploy script.
â Deploy complete!
Project Console: https://console.firebase.google.com/project/xxx/overview
Hosting URL: https://xxx.firebaseapp.com
âš Done in 181.75s
@ laurenzlong-
ãã ãããããã¯4åã®1ãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®å€æŽã§ããããããã°ãããåŸ ã¡ããã ããŸããããé¡ãããããŸãã
æ°ååæåã®æåŸã®ã¡ã¢ä»¥éã®ã€ã³ãã©ã¹ãã©ã¯ãã£åŽã®æŽæ°ã¯ãããŸããïŒ ãããã®å€æŽãè¡ããããŸã§ããã®åé¡ãåéããããšã¯å¯èœã§ããïŒ è¿œè·¡ãå¥ã®/é¢é£ããåé¡ã«ç§»åããªãéããã¯ããŒãºã¯é©åãªç¶æ ã§ã¯ãªãããã§ãã
Firebase functions
ã¯ããã¹ãŠããã«ã/ã¢ããããŒãããããµãŒããŒåŽã§é¢æ°ãäœæ/æŽæ°ãããåŸããéåžžã«äœéã§ãã ä»ã®äººãèšã£ãŠããããã«ãããã¯äž»èŠãªéçºé床ãã³ããŒã§ãã
firebase --version
7.1.0
æ€èšããŠããã ãããããšãããããŸãïŒ
@repentsinnerã¯ããã«ã/ãããã€æéãæ¹åããããã®ããã¯ãšã³ããããžã§ã¯ãããŸã é²è¡äžã§ãïŒãããŠé 調ã«é²ãã§ããŸãïŒïŒãããŸã ãªãªãŒã¹ãããŠããŸããã
éçºããã»ã¹ãã¹ããŒãã¢ããããããã«ãšãã¥ã¬ãŒã¿ãŒãïŒ firebase emulators:start
ãä»ããŠïŒäœ¿çšããŠã¿ãŸãããïŒ ãããããªããç§ãã¡ã¯ããªãã®ãã£ãŒãããã¯ãåŸããã§ãïŒ
@samtsternãæŽæ°ããŠããã ãããããšãããããŸãã
ãšãã¥ã¬ãŒã¿ãŒã¯ãŸã è©ŠããŠããŸãã-ãã©ãã¿ãŒã¢ããªã®functions.https.onCall
ãšãã¡ã€ã€ãŒã¹ãã¢ã®ããŒã¿ã䜿çšããŠããŸãããïŒçŸæç¹ã§ã¯ïŒã¢ããªã®ãã¹ããã«ãã®ãã¹ãŠããªãã€ã¬ã¯ãããŠããããã§ãç§ã®éçºã¯ãŒã¯ã¹ããŒã·ã§ã³ã§ã¯ããããã€ãåŸ
ã€ãããæéãããããŸãã
ç§ã¯ããã調ã¹ãã®ãåŸ ã£ãŠããæéã䜿ãããšãã§ãããšæããŸãð€šã
ãŸã éããããŠããããŸã ä¿®æ£ãããŠããªããã®åé¡ãžã®æ°å¹ŽãããŸããŠããã§ãšãããããŸãïŒ ð
ããããã管çè ãŸãã¯OPã¯ããã®åé¡ã®ååããéåžžã«é ãå±éã®ããã®é¢æ°ãã£ã¬ã¯ããªã®æºåãã«å€æŽã§ããŸããããã¯ãå±éããã»ã¹å šäœã®ãã®æ®µéãžã®ä¿®æ£ã®ã¿ã«åºã¥ããŠéããããããã«èŠããããã§ãã
次ã«ãæ°ãããé¢æ°ã®ãããã€ãéåžžã«é ããåé¡ãéãããšãã§ããŸããããã¯ãé¢æ°ã®ãããã€ããŸã éåžžã«é ãããã§ãð
ãããã€æéãæ¹åããããã«CLIåŽã§ã§ããããšã¯ãã以äžãªãããããã®åé¡ã¯è§£æ±ºãããŸããã ããŒã«ã«éçºã§ã¯ããšãã¥ã¬ãŒã¿ãŒãžã®æè³ãç¶ç¶ããŠããŸããéçºã©ã€ããµã€ã¯ã«ã®äžéšãšããŠã§ã¯ãªããprodã«ãããã€ããå Žåã«ã®ã¿ã firebase deploy
ãå®è¡ããå¿
èŠãããããšãé¡ã£ãŠããŸãã
ããã¯ãšã³ãã®å€æŽã¯ãŸã é²è¡äžã§ãã ãåããã®ããã«ãäºæããªãé 延ãçºçããŸããã
æ確å@samtsternã«æè¬ããŸããããã§ãfirebase / firebase-toolsã«å¯Ÿããåé¡/ãªã¯ãšã¹ãã¯CLIã«ã®ã¿é©çšã§ãããšæããŸããïŒ ããã¯ãšã³ããã«ããŒãããªããžããª/ãããžã§ã¯ããæ¢ããŸãã
ããŒã«ã«éçºã«é¢ããŠã¯ããããªãã¯ãµã€ãããèŠããšãGoogleã¯FirebaseãšFlutterã®çµ±åãæ¬åœã«å¥šå±ããŠããããã§ããããã¯ãéåžžã«ããŸãæ©èœããŠããããã«èŠããŸãããå®éã«ã¯ããã®ãããªéçºæã®äžæŽåã«ééããŸãã ãã®åé¡ãçºèŠãããšãã«ææ¡ããããšãã¥ã¬ãŒã¿ãŒããã£ãšèŠãŠã¿ãŸããããçµ±åãããFirebaseãšFlutterã®éçºã¯ãŒã¯ãããŒããŸã£ãããµããŒãããŠããªãããã§ãã¯ã©ãŠãããã¯ãšã³ããä»ããå Žåã»ã©ã¹ã ãŒãºã§ã¯ãããŸããã§ããã ç§ã¯ãããæè¿æ¹åããããã©ããã確èªããããã«æ»ã£ãŠåã£ãŠããŸããããããã¯ããããããªãããã§ãã
@repentsinnerããããã®ãªããžããªã¯CLIäœæ¥ã®ã¿ã远跡ããŸãã ãã¡ãããç§ãã¡ã¯å ¥ã£ãŠãããã®ãã¹ãŠã«çããããšããŸãããããã§çç£çãªããšãã§ããªãå Žåã¯ãåé¡ã解決ããªããã°ãªããªãããšããããããŸãã ç§ãã¡ã®ããã¯ãšã³ãã¯ãªãŒãã³ãœãŒã¹ã§ã¯ãªããããäžè¬çã«Firebaseã®ãµããŒããå©çšããŠããã°ã¬ããŒããFirebaseã«é¢ããäžè¬çãªæ©èœã®ãªã¯ãšã¹ããæåºããããã«æ瀺ããŠããŸãã
Flutterã«ã€ããŠã¯ãæ°ã«å ¥ã£ãŠããŸãïŒhttps://github.com/FirebaseExtended/flutterfireãåç §ïŒããå ¬åŒã®Firebaseãã©ãããã©ãŒã ã§ã¯ãªããããç§ãã¡ã®ããã«åé¡ãå®å šã«ãµããŒãããããšã¯ã§ããŸããããã€ãã£ãAndroid/iOS/Webã å€åããã¯ãã€ãå€ããã§ãããããããä»ã®ãšããããã¯ç¶æ³ã§ãã
Flutterã¢ããªãFirebaseEmulatorsã«æ¥ç¶ããæ¹æ³ã«ã€ããŠè³ªåãããå Žåã¯ãFlutterFireãªããžããªã§åé¡ãéããŠãç§ãccããŠãã ãããããããã°ãé©åãªFlutterã®äººã ãåå ã§ããŸãã
äºè§£ããŸããã@samtsternã®èª¬æã«æè¬ããŸãã ä»ã®ãšããä»ã®ãããžã§ã¯ãã«ç§»ã£ãŠããŸããããã®ãããžã§ã¯ãã«æ»ã£ãããFlutterFireãªããžããªã調ã¹ãŸãã
ãšãã¥ã¬ãŒã¿ãŒã¯èªèšŒã³ã³ããã¹ãããµããŒãããŠããªãããã100ïŒ å®å šã«åœ¹ã«ç«ããªãIMOã§ãã
dotenvã䜿ãããšããŠããããããããã€ã¡ã³ããããªãŒãºããããšã«æ°ã¥ããŸããã
é ãçªã£èŸŒãã§ãããããŸã åé¡ç¹ã§ããããšã人ã ã«æãåºãããŸãâïž
ãŸã ããã«ééããŠãã人ã
ã«ãšã£ãŠãç§ã圹ã«ç«ã£ããšæã£ãã®ã¯ãäžèŠãªè¥å€§åãã¢ããããŒãããªãããã«functions.ignore
ãå©çšããããšã§ããã å«ããã®ã«ç¹ã«è¯ãã®ã¯.git
ã ãšæããŸãïŒ
{
"functions": {
"ignore": ["node_modules", ".git", ".gitignore", ".nyc_output", ".runtimeconfig.json", "firebase-debug.log", "tslint.json", "tests"]
}
éçºã¯ãŒã¯ãããŒãé¢åãªã®ã§ãé¢æ°ãå®å šã«åé€ããŸããã
ãŸã ããã«ééããŠãã人ã ã«ãšã£ãŠãç§ã圹ã«ç«ã£ããšæã£ãã®ã¯ãäžèŠãªè¥å€§åãã¢ããããŒãããªãããã«
functions.ignore
ãå©çšããããšã§ããã å«ããã®ã«ç¹ã«è¯ãã®ã¯.git
ã ãšæããŸãïŒ"functions": { "ignore": ["node_modules", ".git", ".gitignore", ".nyc_output", ".runtimeconfig.json", "firebase-debug.log", "tslint.json", "tests"] }
ããã¯å®éã«ããã€ãã®çµæããããããŸããã çŸåšãçŽ65ã70ïŒ ã®æéã§å®è¡ãããŠããŸãã ããããšãïŒ
èå³æ·±ã-ããã©ã«ãã§ã¯ã functions
ãµããã£ã¬ã¯ããªã¯ãããžã§ã¯ãã«ãŒãã®äžã«ããããã .git
ãã©ã«ãã¯ãããŸããã ããã圹ã«ç«ã£ã人ã
-ããªãã®ãã£ã¬ã¯ããªæ§é ã¯ã©ã®ããã«èŠããŸããïŒ
@mbleighTrue ã ç§ã®æåã®æšæž¬ã¯ãããã«ã€ããŠè³¢æã§ãããããããé¢æ°ãã£ã¬ã¯ããªã«é©çšããããšã§ãã
@mbleighç§ã¯é¢æ°ã®ã¿ã®ãªããžããªãæã£ãŠããã®ã§ãé¢æ°ãã£ã¬ã¯ããªãæã€ã®ã¯å°ãã°ãããŠããããã«èŠããŸããã ãã¹ãŠãã«ãŒãã«ã·ããããŠã³ããŸããã
ããã¯ç§ã®firebase.json
ããã®æç²ã§ãïŒ
"functions": {
"ignore": [
"__mocks__",
".cache",
".commitlintrc.yaml",
".dependabot",
".editorconfig",
".eslintrc.yaml",
".firebase",
".firebaserc",
".git",
".gitattributes",
".github",
".gitignore",
".lintstagedrc.js",
".nvmrc",
".prettierignore",
".prettierrc.yaml",
".vscode",
"CHANGELOG.md",
"cloudbuild.yaml",
"codecov.yml",
"CONTRIBUTING.md",
"coverage",
"cSpell.json",
"decisions",
"firebase.json",
"firestore.indexes.json",
"jest.config.js",
"node_modules",
"README.md",
"rfcs",
"scripts",
"src",
"test",
"tsconfig.json",
"tsconfig.production.json"
],
"source": "."
},
åãã§æ¬¡ã®ããã«çœ®ãæããŸãã
`` `
{{
"include"ïŒ["lib"ã "package.json"ã "package-lock.json"]
}
FWIWãããã¯ã°ãããåãå ¥ããã®ã§ã次ã®ããšãã§ãããšæããŸãã
{
"exclude": ["!{lib,package.json,package-lock.json}"]
}
ã¯ã©ãŠãæ©èœãéå§ããã°ããã§ããããã€æéã¯èŠçã§ãã
èŠçãªå±éæé:(
çŸåšãFirebaseã¢ããªã«ã¯60ã®ã¯ã©ãŠãæ©èœãå®è¡ãããŠããŸãã æåã¯ãã¯ã©ãŒã¿ãåå ã§å€ãã®å±éã®å€±æãçºçãå§ãããããããã¥ã¡ã³ãã瀺ãããã«ãããããããã«åå²ããŸããã çŸåšã¯äžè²«ããŠãããã€ãããŠããŸãããããã©ã«ãã®ã©ã³ããŒã§GitHubã¢ã¯ã·ã§ã³CIã®äžéšãšããŠãããã€ããã«ã¯ãåãããã«æ倧3åããããŸãã ãããã¯ããããçŽ6ã§ãããããåèš10ãããã§ãé¢æ°ã®ãããã€æéã¯çŽ30åã«ãªããŸãã
é¢æ°èªäœã¯ãäŸåé¢ä¿ãæå°éã®éåžžã«å°ããªã³ãŒãã§ãã ãã€ãã©ã€ã³ãé«éåããããã«ä»ã«äœãã§ãããããããªãã
ãããèããŠæ¬åœã«æ²ããã§ãã å¥ã®ã¢ãããŒãã¯ãè€æ°ã®ãšã³ããªãã€ã³ã/ã«ãŒããåäžã®é¢æ°ã«ãã³ãã«ããããšã§ãã ããã¯ãé¢å¿ã®åé¢/ãµã€ãº/ã»ãã¥ãªãã£ããã¯æããã«æåã§ã¯ãããŸããããããã¯ãã¹ãŠã®APIãšã³ããã€ã³ãïŒå éšã«ãŒã¿ãŒã䜿çšããåäžã®ãšã³ããªãã€ã³ãïŒã§è¡ã£ãããšã§ããããã以æ¥ãå€ãã®ã¯ã©ãŒã¿å¶éãçµéšããŠããŸããïŒããããããã¯æã èµ·ãããŸãïŒã
ããã§ããå ¬åŒããã¥ã¡ã³ãã«ã¯ãCloud Functions APIãä»ããŠé¢æ°ããããã€ãŸãã¯åé€ããããã®åŒã³åºããã«ã€ããŠã100ç§ããã80ããšèšèŒãããŠããããããã®å²ãåœãŠå¶éã¯éåžžã«äœãããã§ãã GoogleãµããŒãã¯ãã®å¶éãããã«åŒãäžããããšãã§ããªãã£ããšæããŸããïŒ
ããã§ããå ¬åŒããã¥ã¡ã³ãã«ã¯ãCloud Functions APIãä»ããŠé¢æ°ããããã€ãŸãã¯åé€ããããã®åŒã³åºããã«ã€ããŠã100ç§ããã80ããšèšèŒãããŠããããããã®å²ãåœãŠå¶éã¯éåžžã«äœãããã§ãã GoogleãµããŒãã¯ãã®å¶éãããã«åŒãäžããããšãã§ããªãã£ããšæããŸããïŒ
@dinvlad APIå¶éãåŒãäžããããšã«ã€ããŠã販売ãšãµããŒãã®äž¡æ¹ã«åãåãããŠããŸãããGCPã³ã³ãœãŒã«ã®å²ãåœãŠã»ã¯ã·ã§ã³ã§æ瀺çã«ç¡å¹å/ã°ã¬ãŒè¡šç€ºãããŠããŸãã æçµçã«ã¯ãããã®å²ãåœãŠã¯å€æŽãããªãããšéç¥ããããã³ã°ã¢ãŠãã§Googleã®ãšã³ãžãã¢ãéãããšãã§ããŸããã
次ã®ãªãªãŒã¹ã§ã¯ãæšæºã®ç¡èŠãªã¹ãã«.git
ãè¿œå ããŸããã
https://github.com/firebase/firebase-tools/pull/2395
ããã«ãããäžéšã®ãªãªãŒã¹ãã¹ããŒãã¢ããããã¯ãã§ãã ãã¡ãããCloud Functionsããã¯ãšã³ãã®ã¬ã€ãã³ã·ã«ã€ããŠç§ãã¡ïŒFirebase CLIããŒã ïŒãã§ããããšã¯ããŸããããŸããã
é¢æ°ãæŽæ°ããªããšãã¯ãå¿
ãfirebase deploy --only hosting
ãå®è¡ããŠãã ãã
ããã§ã¯ãé¢é£ããæ©èœã1ã€ã®æ©èœã«ã°ã«ãŒãåããŠããããããæ©èœã®åã ã®ç²åºŠããšã«1ã€ã®æ©èœãã§ã¯ãªãããæ©èœé åããšã«1ã€ã®æ©èœãã®ããã«èŠããŸãã
ãããã€ã¡ã³ãã®ããã©ãŒãã³ã¹ç¹æ§ã¯ã1ã€ã®æ©èœã«å«ãŸãããã®ã®ã¢ãŒããã¯ãã£ãŒã匷åã«æšé²ããŠããŸãã
ãã®åé¡ã¯ãã€ããªã解決ãããŸãããã 2017幎11æã«ãªãŒãã³ããŸããããåœæãšåããããåé¡ãããããã§ãã ããã«ãã¯ããŒãºããžã®åç §ã衚瀺ãããªãã®ã§ããªãã¯ããŒãºãããã®ãç¥ããããšæããŸãã
ç§ã¯æå¥ãèšã£ãŠããã®ã§ã¯ãªãããã çåã«æã£ãŠããŸãã äœæ¥äžã ãšæããŸãããé²æç¶æ³ãç¥ã£ãŠãããšããã§ãããã
@chriscurnowã¯ãCLIã®åé¡ãšããŠãšã³ããŠãŒã¶ãŒã«è¡šç€ºãããŸããïŒhttps://github.comã®@samtsternã«ããïŒãæ¬åœã®åå ã¯CLIããŒã«ã§ã¯ãªãïŒã¯ããŒãºããœãŒã¹ïŒãµãŒããŒåŽã«ãããšæããããããã¯ããŒãºãããŸããã / firebase / firebase-tools / issues / 536ïŒissuecomment-572830647ïŒã
æ®å¿µãªãããããã¯ãšã³ãã«é©ãããããªãã¯ãã©ãã«ãŒããªããããããã§æŽæ°ãååŸããŸã:(
ã©ãããã°ã°ãŒã°ã«ã®ãã®ãã°ãéããŠããã¯ãšã³ãã§ä¿®æ£ã§ããŸããïŒ
ã°ãã°ãããã»ã©é
ã
ããšãã°ãããã»ã©æéããããå Žåã¯ãFirebaseé¢æ°ã䜿çšããæå³ãããããŸãã
ããã¿ããªãå€åç§éå
šå¡ããã®åé¡ãã°ãŒã°ã«ã«å ±åããããšãã§ããŠãå€å圌ãã¯èãã ãããïŒ
https://firebase.google.com/support/troubleshooter/contact
ã°ãŒã°ã«ã®äœããéèŠãªãã®ã«äœ¿ãããšãããã³ã«ã圌ãã¯ååšããäžã§æãæ¶è²»è ã«åªããäŒç€Ÿã®1ã€ã§ããããšãæãåºããŸãããã¡ãã£ãšãç§ãã¡ã¯è©Šãããšãã§ããŸãã
@RenFontesã±ãŒã¹00075974ãæåºããŸããïŒFirebaseé¢æ°ã®ãããã€ã¯éåžžã«é ããããFirebaseãµããŒãã§ã¯äœ¿çšã§ããŸããã ç§ã¯åœŒããæ»ã£ãŠãããã®ã§ãã®ã¡ãã»ãŒãžãæŽæ°ããŸãã
ç¹å®ã®æ©èœãå±éããããšãå¯èœã§ãã CLIã«åé¢æ°ã®ããã§ãã¯ãµã ãã©ãã«ãŒããèšå®ããå€æŽãããé¢æ°ã®ã¿ããããã€ããããšã¯ã§ããŸããã§ãããïŒãŸãã䜿çšãããã¹ãŠã®ãã®ã远跡ããŸãïŒå€æ°ãããã±ãŒãžãªã©ïŒïŒ
@SrBrahmaã¯ç¢ºãã§ãããåäžã®é¢æ°ã®ã¿ããããã€ããå Žåã§ããåé¡ã¯åŒãç¶ãååšããŸãïŒããšãã°ãåäžé¢æ°ã®ãããã€ã¯ã¿ã€ã ã¢ãŠããåå ã§å€±æããå¯èœæ§ããããŸãïŒã
ãããæ©èœã®ãããã€ã管çããããã«ãŠãŒã¶ãŒã«è² æ ããããå¿ èŠã¯ãããŸãããå€ãã®å Žåãæ©èœã®æŽæ°ã¯ã¢ãããã¯ã«å¿ èŠã§ãããããåå²/ãããåŠçããããšã¯ã§ããŸããã
åé¿çã®ææ¡ã«æè¬ããŸãããããã§æ¬åœã«å¿ èŠãªã®ã¯ãGoogleã®SLAãšãããžã®æºæ ã§ãã
Firebaseãæ©èœããããšãããã®ã¯äºå®ã§ããïŒïŒããããé »ç¹ã«ïŒããã©ãŒãã³ã¹ãäœäžããŸã..æ¬åœã«é ãã§ã..RustããµããŒãããå¿ èŠããããŸã..è¡ããŸããïŒ Nodeãããã¯ããã«é«éã§ããïŒ
ã°ãŒã°ã«ãã°ãŒã°ã«æ©èœã®å±éæéãæ¹åããã®ããŸã åŸ
ã£ãŠããŸããïŒ
PWAããSSRã«ç§»è¡ãããšããããã€ããšã«ããã«7ååŸ
ã€å¿
èŠããããŸããð
æãåèã«ãªãã³ã¡ã³ã
ãã®åé¡ã¯ãå°»ã®æ¬åœã®çã¿ã§ãã åªå 床ãé«ããã¹ãã ãšæããŸãïŒ/