ぽくつなです

.gcloudignore で全部無視して必要なものだけ指定する

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 が含まれたりしてしまうが)。

f:id:pokutuna:20200617172459p:plain
Cloud Debugger

TypeScript プロジェクトでなんかうまく動かね〜〜ってときもこうやって確認する。

大抵自動生成された .gcloudignore#!include:.gitignore と書いてあって、.gitignore でビルド結果を ignore してるんじゃないでしょうか。