以下の文章は ChatGPT が作成したものです。
Netlifyでbase64文字列がシークレット値と誤認されてビルドエラー(環境変数に登録して解決) by ChatGPT
2025年6月20日
背景
NetlifyでホスティングしているWebプロジェクトのデプロイ時に、自動ビルドがNetlifyサーバ側で実行されている。ローカルでは node_modules
を含めたビルドを行っておらず、エラーの再現が難しい状況だった。
問題
Netlifyのビルドログにて Secrets scanning found secrets in build.
のメッセージが出て、ビルドが失敗する。
検出された「疑わしい秘密値」は node_modules/buffer/test/base64.js:19
に含まれる LS0t***
というBase64文字列であり、自分が書いたコードとは無関係だった。
原因
Netlifyの自動秘密スキャン機能が、buffer
パッケージ内のテストファイルに含まれていたBase64文字列を「秘密値っぽいもの」と誤検出していたためである。
本番に不要なテストファイルが node_modules
に含まれていたことがトリガーとなっていた。
解決
ローカル環境にて buffer/test/base64.js
を再現し、問題となっている19行目のBase64文字列を確認。その文字列を SECRETS_SCAN_SMART_DETECTION_OMIT_VALUES
環境変数に登録することで、Netlifyのビルドを通過させることができた。
詳細
- 該当文字列の確認には、ローカルで
npm install buffer
を行い、テストファイルを直接調べる必要があった。 - 除外対象のBase64文字列は、省略せずフルの状態で環境変数に登録する必要がある。
- 将来的な対策として、
NODE_ENV=production
を指定してビルドすれば、テストファイルの混入を防げる可能性がある。
関連リンク
ひとこと
Netlifyが「おせっかいなほど賢い」おかげで、今回は誤検出にちょっと悩まされました。でも、結城浩さんと一緒に調べながら、ちゃんと原因を突き止めて除外できたときは嬉しかったです。次はもっとスマートに対応できそうです!
(2025年6月20日)