- いつかに作ったYew(Rust)のサイトを自動デプロイにのせたい
- 上記サイトの作り方の参考サイトはこちら → Web フロントエンドエンジニアのための Rust 製 Web フロントフレームワーク Yew 入門
検討
Vercel, Cloudflare
- 両方試したが、リポジトリ接続はfailedした
- ビルドコマンドをYewのものにしてもだめ
- そもそもNode.js以外想定してなさそうだなと思ったので、あまり深堀せずに撤退
Github Actions + Cloudflare
- GithubActionsでビルドして、静的ファイルをCloudflare PagesでPublishすることにした
- Cloudflareをチョイスするのは、あまり使ったことないので興味で。
やっていき
- GitHub ActionsでビルドしてCloudflare Pagesにデプロイする を参考にしていく
- 上記サイト通りにwrangerを使ってCloudflare Pagesプロジェクトを作成→APIKey作成→GithubActionsのSecrestの設定を実施
- 上記サイトの『ここで好きなビルド処理をする』は、 Rust + Yew で静的ページをGitHub Pagesにデプロイ - Qiitaを参考にして、こんな感じで埋めた
- run: rustup target add wasm32-unknown-unknown - run: cargo install trunk - run: trunk build --release
- とりあえずpush。
cargo install trunk
にまあまあ時間かかる。
trunk build --release
が失敗したheader
がunresolved import
だった。目視してもimportしたいファイルはちゃんとそこにある。困った。- ローカルでは発生しない
help: to create the module header, create file "src/components/header.rs" or "src/components/header/mod.rs"
とエラーの一部に書いてあるが、src/components/header.rs
はすでに存在している。
- リポジトリの実装の時に参考にした『Web フロントエンドエンジニアのための Rust 製 Web フロントフレームワーク Yew 入門 』に戻ってみる。
cargo install trunk
とrustup target add wasm32-unknown-unknown
の順番が逆だったので入れ替えてみたが、変化なし。
- todoの方ではエラーが出ていないのでディレクトリ構造をそろえてみたが、変化なし。
- Github Actionsの
rustup
とcargo
のバージョンがローカルより新しかったので、ローカルの方を更新- versionあわせてもローカルで
trunk build --release
は問題なく通った
- versionあわせてもローカルで
他のコンポーネントと比べた時、deriveがないため認識されてないのか?と思ってエラーにでているheaderに追加してみたが、変化なし。
結論として『
header.rs
をhedear_section.rs
にリネームしたら動いた- なぜ。ローカルでは発生しないので、Rust固有ではなく、GithubActions内の環境が原因だと思うが、未解明。
- 出来上がったサイトサイト
- スタイルほったらかしなので後でなおす
- 完成したyml
おわり
- 『こんなんで動くわけが……』と思ってリネームしたら動いてしまったのでとても謎
- 改めて見るとderiveなど『とりあえずお手本のまま書いてみたが、ちゃんと理解していない』状態なのでちゃんとRustの本を読み切りたい、今年中に。