デプロイをするための定義は難しくない

ウェブサイトを公開する上で必要となるのがサーバ上に公開するという作業です。よく、使われるのは FTP や FTPS などを用いてアップロードする方法だと思います。

そのような手法ではなく、今回は自動で実施する方法について紹介したいと思います。

今回紹介する方法は GitHub や GitLab のアカウント(サービス版)を持っていて、 Git によるレポジトリ管理をしていることを前提としています。(楽したいのでビルドサーバを用意するなどはなしで)

コマンド(定義ファイル)を用いたデプロイ

ひとつはGitHub Actions をはじめとする CI / CD ツール1を利用し、コマンドを用いたデプロイ方法があります。

公開レポジトリであれば、 GitHub Pages と GitHub Actions を用いてデプロイをするのが一番簡単でしょう。

(参考)Deploy your Astro Site to GitHub Pages 🚀 Astro Documentation

GitHub Pages 以外のツール(Firebase)などのホスティングもこの方法を利用することでデプロイすることが可能です。(デプロイをするための定義は別途自分で行う必要がありますが)

画面上でコマンドなどを指定し、デプロイを行う方法

もう一つは CloudFlare Pages や Netlify など JAMstack プラットフォームをデプロイするツールを利用する方法です。

このようなツールを用いるメリットを挙げると以下の通りです。

CloudFlare Pages や Netlify は無料ではじめることができるため、最初に試してみやすいのではないでしょうか。

共通して注意すること: Node.js のバージョンには気をつけよう

Node.js の実行バージョンが Astro の実行要件にハマっていないとビルドエラーになってしまいます。ビルドエラーになる場合はエラーログで示されている内容を読み解くしかないです。

大抵、 Google 検索などを行うと似たような事象に遭遇している人がまとめていたりしますが、一番問題になりやすいのは Node.js のバージョンです。

Node.js のバージョン管理システムを利用している場合は .nvmrc.node-version も併用して記載しており、それらのツールをみてバージョンを変更するツールもあります。しかし、環境変数で指定する必要があったりするため、注意しましょう。

また、 Node.js v16 は今年の 9 月に LTS サポートが終わります2。これから使うのであれば、 Node.js v18 以上を使うことを(個人的には)推奨します。

あとがき

かなりハイスピードで話してしまい、おまけに途中噛んだり予定外のことがあったりしましたが、時間が多少オーバーしてしまったのは反省点です。(体感的に 12 分話してた)

前回デモに失敗したこともあり、当日動作検証をしていたところ、CloudFlare Pages が(念願の) Node.js v18 に対応していたことが判明し、結果としてスライドの内容を一部書き換えました。そこから派生して色々な内容を補正することになりました。

また、別で「プレビューがうまくいっていない」ということを聞いていたこともあり、アドリブでプレビューなどの話もしました。プレビュー機能は当日まで試していなかったですが、ローカルで確認する環境がないときなどは有用だと感じました。3

今回の内容はやってみないとわからないことも多いと思うので、 Astro デプロイ会などもやってみることができれば良いのかな、と思います。


  1. CI/CDとは、「Continuous Integration/Continuous Delivery」の略。継続的インテグレーション・継続的デリバリーと呼ばれる。今回の場合は主に CD を利用している。 ↩︎

  2. Node.js 内部で利用している OpenSSL 1.1.1 が 2023 年 9 月にサポート終了するため。参考 ↩︎

  3. このサイトで利用している Hugo というシステムで脚注機能があることをプレビューで確認してて、プレビュー機能の重要さを再確認したため ↩︎