Skip to content

hotfix - #198

Open
riiimparm wants to merge 4 commits into
mainfrom
develop
Open

hotfix#198
riiimparm wants to merge 4 commits into
mainfrom
develop

Conversation

@riiimparm

Copy link
Copy Markdown
Collaborator

No description provided.

@netlify

netlify Bot commented Sep 8, 2026

Copy link
Copy Markdown

Deploy Preview for rowicy ready!

Name Link
🔨 Latest commit f9e4304
🔍 Latest deploy log https://app.netlify.com/projects/rowicy/deploys/6aa02b5b0388090008808e37
😎 Deploy Preview https://deploy-preview-198--rowicy.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@riiimparm

Copy link
Copy Markdown
Collaborator Author

netlifyログが必要

@riiimparm

Copy link
Copy Markdown
Collaborator Author
原因
Ignored build scripts: puppeteer.
Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts.

これが根本原因です。pnpm v10 はデフォルトで依存パッケージの postinstall スクリプトをブロックします。puppeteer は postinstall で Chrome バイナリをダウンロードするのですが、そのスクリプトが実行されなかったため、Netlify 上に Chrome 本体が存在せず、remark-mermaid-injector(mermaid 図をレンダリングするために puppeteer/puppeteer-core を使っている)が起動に失敗しています。

Could not find Chrome (ver. 152.0.7977.54)
  • ローカルで問題ない理由: おそらくローカルでは以前に pnpm approve-builds を実行済み、または npm/yarn を使っている、あるいは Chrome がすでにキャッシュされているため、この問題が表面化していません。
  • Netlify のビルド環境はロックファイルの承認設定(承認済みビルドスクリプトのリスト)を引き継がないと、CI 上では毎回スクリプトがブロックされます。

なお実害としては、trivy-supply-chain-attack-2026-1.md の mermaid 図のレンダリングだけが失敗していて、ビルド自体は最終的に成功してデプロイもされています(70 page(s) built, Site is live)。つまり今は「そのページの mermaid 部分だけ壊れている」状態のはずです。

対処法

方法1: pnpm に puppeteer のビルドスクリプト実行を許可する(推奨)

ローカルで:

pnpm approve-builds

puppeteer を選択して承認すると、package.json に以下が追記されます(pnpm v10 の仕様):

{
  "pnpm": {
    "onlyBuiltDependencies": ["puppeteer"]
  }
}

これをコミットして push すれば、Netlify 側でも pnpm install 時に puppeteer の postinstall(Chrome ダウンロード)が実行されるようになります。

方法2: ビルドコマンドで明示的に Chrome をインストールする

netlify.toml のビルドコマンドを変更:

[build]
command = "npx puppeteer browsers install chrome && astro check && astro build"

方法3: puppeteer-core ではなく @sparticuz/chromium 等のサーバーレス向け軽量 Chromium を使う
Netlify のビルド環境は都度使い捨てなので、フルの puppeteer を都度インストールするのは重くなります。mermaid レンダリングが頻繁なら検討の価値があります。

@riiimparm

Copy link
Copy Markdown
Collaborator Author

beautiful-mermaidでブラウザ非依存で対応できそう。mermaidのガントチャートと円グラフ対応はしていないのでそのフォールバック実装とかも考えるのが面倒。クライアントレンダリングに戻すのもまた面倒なのでこれでやりたい。
また改修箇所ふえるので後ほど

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant