2025年01月01日

PythonでNetlifyにフォルダを爆速デプロイ!

sc_deploy_netlifty.png


はじめに


いままでは、Netlifyの管理画面にアクセスして、フォルダをドラッグアンドドロップすることでアップロードしていました。簡単で便利なのですが、もし手が滑って間違ったフォルダをアップロードしてしまったら……?


うっかり隣の秘密のフォルダーをアップしてしまったら、1秒で全世界に公開されてしまいます。これはもう悪夢です。


「Pythonだけで安全に、確実に、Netlifyへデプロイできたらいいのに」


そう思って始めたのが、今回のプロジェクトです。

しかも、ChatGPT(GPT-4o)を相棒にしたら、驚くほどスムーズに完成しました。


この記事では、完成したスクリプトの紹介と、その過程での苦労やハマりポイントを語ります。


やりたかったこと


・Node.jsやnpmを使わず、PythonだけでNetlifyにデプロイ

・ローカルの静的フォルダ(HTML/画像)をまるごとアップロード

・トークンで自動化できる構成にしたい


最初の試み:files= を使ってPOST


PythonでZIPを作成し、NetlifyのAPIに requests.post(..., files=...) で送ってみました。


files = {'file': (zip_path, f, 'application/zip')}
response = requests.post(url, headers=headers, params=params, files=files)


✅ 成功と表示される

❌ でも中身を確認すると、index.htmlが消えてる!?


さらに、画像やCSSファイルもすべて 0バイト。


原因と解決策


ChatGPTにスクリプトを投げて聞いてみたところ、


Netlify APIは Content-Type: application/zip でZIPバイナリを直送(data=)しないといけない。files= ではmultipart/form-dataになってしまい、NetlifyがZIPとして扱えない。

という指摘。


つまり、こう直す必要がありました:


with open(zip_path, "rb") as f:
binary_data = f.read()
response = requests.post(url, headers=headers, params=params, data=binary_data)


完成スクリプト:python-netlify-folder-deployer


完成したスクリプトはGitHubで公開しています。




・Pythonだけで完結

・Netlify REST APIでZIPアップロード

・draft/production 切り替え対応

・ログ付きで安心


まとめ


・PythonだけでNetlifyにフォルダをアップロードするスクリプトを作った

・最初は files= にハマって404地獄を味わった


Netlifyは便利だけど即時公開なので、爆速な分、慎重さも必要です。

このスクリプトが、あなたの自動デプロイ生活を少しでも快適にできれば幸いです!

posted by MON at 00:00| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
【今是昨非】http://nomulabo.com/