pubDate: 2024-06-22
author: sakakibara
github pagesとはGitHubが提供する(静的)サイトホスティングサービスである。
リポジトリにhtmlファイルを置くことで、https://username.github.io/repo-name/file_name.html
のようにそのページへアクセスできるようになる。
最高では?と思うかもしれないが、使用にあたりいくつかの制限がある。
どれも”そりゃそうだ”と思う制限ではあるが、正直”既存のWebサイトのコピーを…”の部分はテストサイトをデプロイする際に踏んでしまいがちな地雷かもしれない。
Jekyllを使うことによってmarkdownファイルによるデプロイやカスタムドメインの設定などができる。 また、GitHub Actionsを使って自動デプロイすることも可能であり、かなり多くのニーズを取り込んでいるサービスである。
多くの場面でちょっとした静的サイトデプロイの候補として挙げられるGitHub Pagesだ。
その手軽さが売りであり、最も多くの使用方法はリポジトリのルートにindex.html
をおくことだろう。
左上のsettingsから
右サイドバーのナビゲーションバーからPages
を選択し、Build and deploymentのDeply from a branch
を選択する。ここで好きなブランチを選択し、好きなブランチを選択する。
つぎに、ディレクトリを選択する。
/
を選択するとリポジトリのルートにindex.html
がある場合、/docs
を選択すると/docs/index.html
がある場合にデプロイされる。
custom domainも設定することができる。
これでhttps://username.github.io/repo-name
でアクセスできるようになる。
あまりにも簡単すぎて説明することがないが、これがGitHub Pagesの基本的な使い方である。
リポジトリのルートや/docs
にindex.html
を作成しなければならないのだろうか?
それは嫌なのでgithub Actionsを(少々)カスタマイズしてデプロイする手法について説明しよう。
ローカルリポジトリで.github/workflows
ディレクトリを作成しその中に適当なyaml
ファイルを作成する。
working directoryにindex.html
があるような場合(今までのような場合)では以下のようにyaml
ファイルを記述し、git push
すれば自動でデプロイされる。
ここでつまづきやすいのはon>push>branches
であり、
settings>Environments>github-pages>Deployment branches and tags
でmain
を指定していなければdeployされない。
好きなブランチを指定しよう。
また
のpath
を指定することでデプロイするディレクトリを指定できる。
例えば、dist/index.html
に公開したいファイルが置かれているなら
のようにすれば良い。
index.html
をpushと同時にbuildして特定のファイルに生成されたファイルをデプロイするにはどうしたらいいだろうか。
先ほどのyaml
ファイルのように多少の変更を加えるだけでビルド & デプロイが可能になる。
例えば次のようなディレクトリがあるとする。
ここで
のようなコマンドでdist
ディレクトリにindex.html
が生成されるとする。
そのような場合、.github/workflows/deply.yaml
を次のように記述する。
注目すべきはここである。
run
の中でビルドコマンドを実行し, path
でビルドされたファイルが置かれているディレクトリを指定する。
これでgit push
するだけでビルド & デプロイが可能になる。
これでhttps://username.github.io/repo-name/dist
ではなく
https://username.github.io/repo-name/
のようにアクセスできるようになる。
最高だね!
github pagesをGitHub Actionsでデプロイする際に重要なactionが3つある。
それぞれがGitHub Pagesのデプロイに必要な機能を提供している。 それぞれ、
といった機能を提供している。
だが、ほとんどの場合、どのようなartifactsをデプロイするかが開発者にとって重要である。
そこでactions/upload-pages-artifact
を使ってデプロイするファイルを指定することができる。その使用方法は各リポジトリのaction.yml
に記載されている。