App Engine や Cloud Function や Firebase プロジェクトのデプロイ時などでしばしばやる。 TypeScirpt などトランスパイルが必要な言語をデプロイする際に、実行に必要ないファイルをたくさんアップロードしていることがある。
.gcloudignore
で全部 ignore して、必要な特定のファイルやディレクトリだけ指定して反映すると良い。
# ignore all * # upload list !. !package.json !yarn.lock !build/**
gcloud topic gcloudignore | Cloud SDK のドキュメント | Google Cloud
.
を追加しないとカレントディレクトリのファイルがアップロードされないことがあるようだ(Cloud Functions で確認)。この設定で意図通り .git/
や node_modules/
はアップロードされない。
アップロードされるファイルを確認する
.gcloudignore
を評価した結果は $ gcloud meta list-files-for-upload
というコマンドで確認できる。
実際にデプロイした結果は、Cloud Functions であればコンソールの ソース
タブから、App Engine なら Cloud Debugger のファイルリストを眺めて確認してる(source-context.json
やデプロイ時に GCP 側で install した node_modules
が含まれたりしてしまうが)。
TypeScript プロジェクトでなんかうまく動かね〜〜ってときもこうやって確認する。
大抵自動生成された .gcloudignore
に #!include:.gitignore
と書いてあって、.gitignore
でビルド結果を ignore してるんじゃないでしょうか。