週報の自動生成
毎週の振り返り時に、今取り組んでいるGitHubのIssueや、今週CloseしたIssueが一覧できると進捗確認に便利です。
ということで、自分は毎週チームメンバーのための週報を生成しています。(といいうか前任の方がスクリプトでやっていたので真似しているだけですが・・)
今回はこの週報の生成方法を少し改良したので、その方法を紹介します。
今までのやり方
週報は素朴なシェルスクリプトで実装しており、GitHubへのアクセスはcurlで頑張って実行し、jqでMarkdownに整形していました。
認証にはGitHubのパーソナルアクセストークンを利用していました。
MEMBERS="inajob hogehoge fugafuga" # チームメンバーを列挙する
TOKEN=XXXXX
GHUSER=ZZZZ
REPO=YYYYY
CLOSED_DATE="2022-03-25"
echo "# 今週閉じたIssue"
echo
for m in $MEMBERS
do
echo "- $m"
curl --silent -u $GHUSER:$TOKEN "https://api.github.com/search/issues?q=repo%3A${REPO}+assignee%3A${m}+is%3Aclosed+closed%3A%3E${CLOSED_DATE}" | \
jq -r '.items[]| " - [" + .title + "](" + .html_url + ")"'
echo
done
echo "# 取り組み中のIssue"
echo
for m in $MEMBERS
do
echo "- $m"
curl --silent -u $GHUSER:$TOKEN "https://api.github.com/search/issues?q=repo%3A${REPO}+assignee%3A${m}+is%3Aopen" | \
jq -r '.items[]| " - [" + .title + "](" + .html_url + ")"'
echo
done
まぁこれはこれで便利でしたが、curlのところがどうにも不恰好だったので、GitHub CLIを使うようにしてみました。
GitHub CLI を使った方法
事前にgh auth login
が必要です、またこのスクリプトは対象となるリポジトリをcloneしたディレクトリ配下で実行する必要があります。
APIの引数部分がコマンドライン引数になりスッキリしました。またghコマンドにjqが内蔵されているので、後続のjqコマンドも不要となりました。
echo "# 今週閉じたIssue"
echo
for m in $MEMBERS
do
echo "- $m"
gh issue list --assignee ${m} --search "is:closed closed:>${CLOSED_DATE}" --json 'title,url' --jq '.[]|" - [" + .title + "](" + .url + ")"'
echo
done
echo "# 取り組み中のIssue"
echo
for m in $MEMBERS
do
echo "- $m"
gh issue list --assignee ${m} --json 'title,url' --jq '.[]|" - [" + .title + "](" + .url + ")"'
echo
done
まとめ
GitHub中心にタスクを管理している場合は、このようにスクリプトを使って、週報を作ることができて便利です。