GitHub issue をブログ記事に変換する仕組みを GitHub Actions を使ってこしらえてみた。
できたもの
背景
本ブログの生成には hugo という静的サイトジェネレータを使っており、基本的には PC を使って執筆、生成、デプロイまで行うような建付けで運用している。が、ときどきスマホで記事が書けなくて不便だなーと思うことがあり、うまいやり方はないものかと考えていた。
うすらぼんやり考えていた要件としては、
- スマホでちゃちゃっと記事が書ける
- マークダウンみたいなもので書くことができる
- あわよくば既存の記事を後から編集できる
みたいなもの。
hugo には、たとえばワードプレスについてるような管理画面がない。Netlify CMS みたいなものを使うと管理画面をこしらえることができるようなことが書いてある気がするけれど、それを運用するのもまた面倒だし、もうちょっと簡単に済ませらんないかなー等と考えていた。
GitHub issue をブログ記事に変換するというやり口
ふと、GitHub issue ならばスマホで何となく書くことができ、しかもマークダウンであり、何なら画像貼ったりもできるし、というので要件を満たすものに近いんではないかということに気づいた。なんならもう GitHub issue をそのままブログですって言い張っていく線まで考えたが、せっかく hugo あるし、うまい具合に “GitHub issue をブログ記事に変換” できたら便利かもなー、ということでちょっと作ってみた。本記事もさっそく GitHub issue からの生成してみている。
どういったものを作ったか
こんなようなことをやってくれる Actions にしてみた。
- issue の更新イベントを捕まえて
- ブログのリポジトリをクローン
- issue を取得、hugo が食えるフォーマットに変換し、ブログのリポジトリの所定の位置に配置
- commit して push して pull request にする
その後、一応 pull request を自分がなんとなくレビューしてみて、良さそうだったらマージ。
マージしたあとは別途 デプロイ用の Actions を実行してサイトを生成&デプロイ、みたいな流れ。デプロイのための GitHub Actions は、pull request がマージされたら勝手に実行しちゃってもいいかもしれない。
課題
なんとなく使えそうだけどもいくらか課題があり、
- issue 変更時には pull request を更新してほしいが、次々 commit を積むというのも難しいので force push にしている
- これは PC での編集と相性が悪いようにも思える (pull request を PC で編集したら issue 側に反映させないといけない気がする)
- 自分以外が issue を立てたときもブログ記事になってしまう。ワロス
- これは actions 実行の条件として、issue を起票あるいは変更イベントを発行した author が自分であること、というのを入れればよさそう
- (追記) その後、issue を変更した人が “pankona” でなかったら actions を何もしないで終了するようにしてみた。勝ったか!?
書けよ
仕組みを作るのはいいがちゃんとブログを書こうな (戒め)