daemonfreaks.com

github actionsでデプロイ

posted by jun-g at Sun, 13 Feb 2022 12:55 JST

前回 からの続きで、新しい記事を書いてgithubにpushしたらgithub actionsを使ってサーバーに自動的にデプロイされるようにしました。

尚、実装には このページ を参考にしました。分かりやすい記事を書いていただきありがとうございました。

どこからでも記事が書けるように、という目標でチマチマ整備を進めてたのですが、これでgithubにログインできればどこからでも記事を書けるようにはなったので、一旦目標達成ということで。

mtimeをメタデータから取る

posted by jun-g at Sun, 06 Feb 2022 23:40 JST

PyBlosxomは記事の作成日時を各エントリーファイルの修正日時(mtime)から取得します。投稿後に過去記事を修正した場合に作成日付が変わってしまうのが気に入らなかったので、entrycacheというプラグインを使用して初回に記事が読み込まれた際のmtimeがキャッシュされるようにしていましたが、キャッシュファイルがサーバー側で生成・更新され続けるため、キャッシュファイルを紛失してしまうと作成日時が再現できなくなる脆弱な仕組みが気になっていたので、 entrymtime というプラグインを自作し、各エントリーファイルのmetadataに作成日時を書いておけるようにしました。

移行の為にentrycacheのキャッシュファイルから作成日時を抽出して各エントリーファイルのmetadataに追記。

import os, time

with open('.entrycache') as c:
    data = c.read()

caches = eval(data)

for item in caches.items():
    fname = os.path.basename(item[0])
    if not os.path.exists(fname):
        continue
    t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(item[1]))
    with open(fname) as r:
        lines = r.readlines()
    lines.insert(1, "#entrymtime %s\n" % t)
    with open(os.path.join("new", fname), 'w') as w:
        w.writelines(lines)

ついでに拡張子がtxtのエントリーファイルの拡張子を blx に変更しました。

さらについでに、エントリーファイルもgithubで管理するようにしました。ついでというよりこれが本当のやりたかったこと。

うーん、2022年の記事とは思えないですね…w