koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

GitHub Pagesでホスティングするページで参照するデータの定期的な更新もGitHub Actionsで出来てしまう

葬送のフリーレン人気投票 | 少年サンデー の投票が締め切られましたね。皆さん誰に何票投票しましたか? 僕はヒンメルに1万数十票の非ガチ勢です。

さて、この人気投票はツイッターに特定のハッシュタグをつけてツイートという形で行われたので、第三者も投票状況を見ることができる。自分はこれを集計して大喜びしていた。

koudenpa.hatenablog.com

上記の記事を書いていた時点では投票状況の取得を手動更新をしていたのだけれど、どう考えても何日かしたら飽きて放置するので自動更新したかった。

GitHub Pages向けのコンテンツ取得なのでGitHub Actionsで更新すればよかろう、とGitHub Actionsのscheduleで日に二回ほど最新のデータの取得、リポジトリへのPushとPagesへのデプロイをするワークフローを実行するようにしてみた。

  1. TwitterAPIを呼び出して検索した結果をファイル出力
  2. それをリポジトリにPush
  3. 続けてGitHub Pagesへデプロイ

これを1つのワークフローでやってしまった。

github.com

GitHub Actions既定の GITHUB_TOKEN でリポジトリにPushしても、そのPush等を条件としたワークフローは動作しない(不測の無限ループを回避するのが主な理由であるっぽい)。

なので、Push契機で他のワークフローを起動してデプロイするようなことは別途トークンを用意するなどの手間があるのだけれど、同一のワークフロー内で「続けてGitHub Pagesへデプロイ」してしまえばワークフロー内で更新された状態をデプロイできる。

(外部に依存する)データの収集、リポジトリへPush、Pagesへデプロイ、これを1つのワークフローで済ましてしまう省力構成はまぁまぁ実用的なのではないかと思った。

ので記事にして備忘した次第。

投票結果が楽しみだ。それまでは第三者の集計を眺めて待ちたい。

frieren2022.koudenpa.com