面倒だとブログを書かない。
なので極力面倒をなくすために、静的コード生成およびGitHub Pagesへのデプロイを自動化した。
目次
やりたいこと
現状のブログ公開の流れ(before)
- 記事記載用ページ生成
1
$ hexo new post xxxxx
- 生成されたxxxxx.mdにブログ内容を書く
- 静的コード生成 & GitHub Pagesにデプロイ
1
$ hexo generate -deploy
- 記事管理用リポジトリに作成したコードをコミット
自動化後(after)
- 記事記載用ページ生成
1
$ hexo new post xxxxx
- 生成されたxxxxx.mdにブログ内容を書く
- 記事管理用リポジトリに作成したコードをコミット
自動でGitHub Pages用リポジトリにデプロイ
自動化実現のための設定方法
- GitHub Actionsでデプロイ用のjob用意
以下yamlを用意し、.github/workflows
配下に配置する。
1 | name: Hexo generate and deploy to GitHub Pages |
HEXO_DEPLOY_PRI
とHEXO_DEPLOY_PUB
の用意
以下コマンド実行し、ED25519鍵を生成する。
参考:新しい SSH キーを生成して ssh-agent に追加する1
$ ssh-keygen -t ed25519 -C "your_email@example.com" -f github-deploy-key
passphraseはGitHub Actions上で入力できないので、空としておく。
github-deploy-keyとgithub-deploy-key.pubが生成される。
github-deploy-keyはHEXO_DEPLOY_PRIで、HEXO_DEPLOY_PUBはgithub-deploy-key.pubを設定する。HEXO_DEPLOY_PRI
記事管理用リポジトリ
にて、github-deploy-key
に記載の内容をSettings > Secrets > New Repository secret
に、
HEXO_DEPLOY_PRI
という変数名で保存するHEXO_DEPLOY_PUB
GitHub Pages用リポジトリ
にて、github-deploy-key.pub
に記載の内容をSettings > Deploy keys > Add deploy key
に、
HEXO_DEPLOY_PUB
という変数名で保存する
以上。
この設定で、mainブランチにpushされたときにnpx hexo clean && npx hexo generate -deploy
が実行される。
ちなみに hexo generate -deploy
でデプロイする宛先等の設定値は_config.yml
に記載されている値が使われる。
おわりに
簡単に自動化できた。
GitHub Actionsでもうちょっと遊ぶ。