ドキュメントのデプロイ#
このリポジトリは、main への push で GitHub Actions からドキュメントサイトを Void へデプロイします。ワークフローは GitHub OIDC を使うので、長寿命の VOID_TOKEN シークレットは不要です。
ローカルデプロイでは、同じデプロイ経路が専用のワークスペースタスクとして公開されています。
vp run deploy#docs
このタスクはデプロイ前にローカルリポジトリからビルドするので、公開されるサイトは、レジストリにすでに公開されているものではなく、現在の Rust crate とローカル npm ワークスペースパッケージを使います。
タスクが実行すること#
vp run deploy#docs は tools/scripts/deploy-docs-to-void.mjs を実行し、次を回します。
cargo build --workspacecrates/ox_content_napiでnapi build --releasenpm/ox-content-islandsでvp packnpm/vite-plugin-ox-contentでvp packnpm/ox-content-code-playでvp run builddocsでvp buildvpx void@0.10.8 deploy
デプロイコマンドの既定値は、このリポジトリが使う Void プロジェクトと docs 出力ディレクトリです。
| 設定 | 既定 | 目的 |
|---|---|---|
VOID_PROJECT |
ox-content |
void deploy --project に渡します。 |
OX_CONTENT_DOCS_BASE |
/ |
Void ホスト向けサイトの Vite base パスです。 |
OX_CONTENT_DOCS_SITE_URL |
https://ox-content.void.app |
メタデータと OG に使う絶対サイト URL です。 |
| デプロイディレクトリ | docs/dist/docs |
void deploy --dir に渡します。 |
Void は https://ox-content.void.app をルートパスでホストするので、デプロイタスクは docs の base を既定で / にします。その上書きなしの通常の本番 docs ビルドは、いまも docs/vite.config.ts で設定した GitHub Pages の base を使います。
GitHub Actions OIDC#
トークンなしデプロイのワークフローは .github/workflows/void-deploy.yml にあります。
id-token: write を付与し、GitHub Actions のシェルステップから tools/scripts/deploy-docs-to-void.mjs を直接実行します。これにより void deploy は実行時に GitHub OIDC を短寿命の Void デプロイトークンへ交換できます。
リポジトリは一度 Void プロジェクトへ接続する必要があります。
vpx void@0.10.8 github connect ox-content \
--repo ubugeeei-prod/ox-content \
--branch main \
--executor github_actions \
--workflow .github/workflows/void-deploy.yml
組織向けの GitHub App がまだ入っていない場合は、先に vpx void@0.10.8 github install を実行してください。
上書き#
よく使うデプロイ先には環境変数を使います。
VOID_PROJECT=ox-content-preview vp run deploy#docs
OX_CONTENT_DOCS_BASE=/ \
OX_CONTENT_DOCS_SITE_URL=https://ox-content.void.app \
vp run deploy#docs
余分な引数は void deploy へ転送されるので、プロジェクトやディレクトリはコマンドラインからも上書きできます。
vp run deploy#docs -- --project ox-content-preview --dir docs/dist/docs
CSS とアセットパス#
デプロイしたサイトで HTML は読み込めるのに CSS やクライアントアセットが欠けている場合は、まず base パスを確認してください。Void へのデプロイは次でビルドします。
OX_CONTENT_DOCS_BASE=/ vp run deploy#docs
生成 HTML は /ox-content/assets/index.css ではなく、/assets/index.css のようなルート相対アセットを参照する必要があります。