.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

アップロードされるファイルを確認する

.gcloudignore を評価した結果、gcloud app deploygcloud functions deploy で実際に何がアップロードされているのかは意外とぱっと確認できない。

実際にデプロイしてみて、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 してるんじゃないでしょうか。