vim-jp Slack のログを HTML 化するプロジェクトです。
Slack 上では無料枠のため
- 古いメッセージが見れない
- ワークスペースに参加していない人には見えないため、ブログ等から引用などして参照したい
- 知見が消えるのはもったいない
といった問題があり、それらを解決するため作られました。
興味を持った方は vim-jp Slack や @tyru, @thinca 等に声をかけて頂ければ GitHub の slacklog Team に招待します (Slack token などもその際共有します)。
vim-jp Slack への参加方法はこちらをどうぞ。
vim-jp » vim-jpのチャットルームについて
- Go
- (あれば)GNU Make
.env.template
からコピーして .env
ファイルを作成してください。
(各環境変数の説明はファイルを参照)
ログを展開
$ make logdata
HTMLの生成
以下のコマンドを実行すると_site
以下に生成されます
scripts/generate_html.sh
scripts/build.sh
GNU Makeがあればmake
もしくはgmake
を実行するだけで生成されます
scripts/download_emoji.sh
scripts/download_files.sh
特定のツールに依存していないので、各自お好きなサーバーを_site
以下で起動してください
開発サーバーの起動(例):
python -m http.server --directory=_site
以下のコマンドで自分が変更した結果として生じた generate-html の出力内容の差分 を確認できます。
$ ./scripts/site_diff.sh
site_diff.sh
では現在のHEADでの generate-html の結果と merge-base での
geneate-html の結果の diff を取得しています。
出力先は ./tmp/site_diff/current/
および
./tmp/site_diff/{merge-base-commit-id}/
ディレクトリとなっています。
merge-base の算出基準はローカルの origin/master です。そのため origin/master が
リモート(GitHub)の物よりも古いと出力内容が異なり、差分も異なる場合があります。
-u
オプションを使うと merge-base の算出前にローカルの origin/master を更新し
ます。変更がなくても更新にそれなりに時間がかかるため、デフォルトではオフになっ
ており明示的に指定するようにしています。
merge-base の出力結果はキャッシュし再利用しています。このキャッシュを無視して強
制的に再出力するには -f
オプションを使ってください。
$ ./scripts/site_diff.sh -f
全てのキャッシュを破棄したい場合には -c
オプションを使ってください。-c
オプ
ションでは ./tmp/site_diff/
ディレクトリを消すだけで差分の出力は行いません。
$ ./scripts/site_diff.sh -c
差分だけを特定のファイルに出力するには -o {filename}
オプションを使ってくださ
い。リダイレクト ( > filename
) では差分以外の動作ログも含まれる場合がありま
す。
注意事項: ./scripts/site_diff.sh
は未コミットな変更を stash を用いて保存・復
帰しているため staged な変更が unstaged に巻き戻ることに留意してください。
log-data ブランチにはSlackからエクスポートしたデータを格納し、それを本番の生成 に利用しています。log-data ブランチの更新手順は以下の通りです。
-
Slack からログをエクスポート(今はできる人が限られてる)
-
ログをワーキングスペースに展開する
-
convert-exported-logs
サブコマンドを実行する$ go run . convert-exported-logs {indir} {outdir}
-
更新内容を log-data ブランチに
commit --amend
してpush -f
以下の手順で Pull Request への site_diff.sh
の実行結果を
Artifacts として Web から取得できます。レビューの際に利用してください。
- Pull Request の Checks タブを開く
- CI ワークフロー(右側)を選択
- Compare Pages and Site ジョブ(右側)を選択
- Artifacts ドロワー(左側)を選択
diffs-{数値}
アーティファクトをダウンロード
以下のスクリーンショットは、上記の選択個所をマーキングしたものです。 (SSには3つのアーティファクトが表示されますが、現在は2つになっています)
Artifacts はそれぞれ zip としてダウンロードできます。
diffs-*.zip
には sites_diff.sh
の差分が含まれています。
log-*.zip
は動作ログが含まれていますが、こちらはCIの動作デバッグ目的のものです。
末尾の数値は ${{ github.run_id }}
由来です。
Artifacts に差分を出力している主な理由は2つあります。1つ目は、小さな変更でも差 分をオンライン上のどこかに出力しないと、レビューの負荷が高すぎてそれを解消した かったという動機です。
2つ目は、テストデータとして実際のログを使っているため、差分とはいえログの一部の コピーが消せない状態で永続化されるのを避けたい、という動機です。vim-jp slackで は参加者の「忘れられる権利」を尊重しています。
以上の理由から消せる状態でデータ=差分をオンライン上にホストできる GitHub Actions の Artifacts を利用しています。
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。