開発日誌

開発した時に躓いたこととかの記録

Yew(Rsut)をGithubActionsで自動デプロイする

検討

Vercel, Cloudflare

  • 両方試したが、リポジトリ接続はfailedした
  • ビルドコマンドをYewのものにしてもだめ
  • そもそもNode.js以外想定してなさそうだなと思ったので、あまり深堀せずに撤退

Github Actions + Cloudflare

  • GithubActionsでビルドして、静的ファイルをCloudflare PagesでPublishすることにした
  • Cloudflareをチョイスするのは、あまり使ったことないので興味で。

やっていき

- run: rustup target add wasm32-unknown-unknown
- run: cargo install trunk
- run: trunk build --release
  • とりあえずpush。
    • cargo install trunkにまあまあ時間かかる。
  • trunk build --releaseが失敗した
    • headerunresolved 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 trunkrustup target add wasm32-unknown-unknownの順番が逆だったので入れ替えてみたが、変化なし。
  • todoの方ではエラーが出ていないのでディレクトリ構造をそろえてみたが、変化なし。
  • Github Actionsのrustupcargoのバージョンがローカルより新しかったので、ローカルの方を更新
    • versionあわせてもローカルでtrunk build --releaseは問題なく通った
  • 他のコンポーネントと比べた時、deriveがないため認識されてないのか?と思ってエラーにでているheaderに追加してみたが、変化なし。

  • 結論として『header.rshedear_section.rsにリネームしたら動いた

    • なぜ。ローカルでは発生しないので、Rust固有ではなく、GithubActions内の環境が原因だと思うが、未解明。
  • 出来上がったサイトサイト
    • スタイルほったらかしなので後でなおす
  • 完成したyml

おわり

  • 『こんなんで動くわけが……』と思ってリネームしたら動いてしまったのでとても謎
  • 改めて見るとderiveなど『とりあえずお手本のまま書いてみたが、ちゃんと理解していない』状態なのでちゃんとRustの本を読み切りたい、今年中に。