ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

Personal access tokens を使って github の API でコミットメッセージのデータ収集してみる

github で管理しているリポジトリのコミットメッセージを吸い出して作業内容を解析したくなり、コミットメッセージが取得できないか調査してみました。
後で、この情報を Elasticseach にでも入れてみたいと思ってます。

github API のアクセストークン取得

自分のアカウントで github に接続し、右上の[settings]をクリックします。

[Developer settings]をクリックします。

[New GitHub App]ボタンをクリックします。

[Personal access tokens]を選択し[Generate new token]をクリックします。

パスワード入力画面が表示されるのでパスワードを入力します。

[New personal access token]という画面が表示されるので必要個所に情報を追加します。
[Generate Button]ボタンをクリックすると Personal アクセストークンが作成されます。

[Personal access tokens]ができると以下の画面から確認できます。

APIを使用してデータ収集(commit情報)

以下のコマンドでレポジトリ全体のコミット情報が取得できます。

TOKEN={'作成したPersonal access token'}
USER_NAME={'myname'}
REPO_NAME={'myrepo'}
curl -H "Authorization: token $TOKEN" https://api.github.com/repos/$USER_NAME/$REPO_NAME/commits
Commit の絞り込み(ブランチ)
TOKEN={'作成したPersonal access token'}
USER_NAME={'myname'}
REPO_NAME={'myrepo'}
BRANCH_NAME={'branch'}
curl -H "Authorization: token $TOKEN" https://api.github.com/repos/$USER_NAME/$REPO_NAME/commits/$BRANCH_NAME

APIを使用してデータ収集(issues情報)

以下のコマンドでレポジトリ全体の問題情報が取得できます。

TOKEN={'作成したPersonal access token'}
USER_NAME={'myname'}
REPO_NAME={'myrepo'}
curl -H "Authorization: token $TOKEN" https://api.github.com/repos/$USER_NAME/$REPO_NAME/issues
Issue の絞り込み(状態)

状態ごとに絞り込みが行えます。

  • state=open … Open 状態の Issue のみ取得
  • state=closed … Close 状態の Issue のみ取得
  • state=all … すべての Issue を取得

closedのみの場合

TOKEN={'作成したPersonal access token'}
USER_NAME={'myname'}
REPO_NAME={'myrepo'}
curl https://api.github.com/repos/$USER_NAME/$REPO_NAME/issues?state=closed
Issue の絞り込み(ラベル)

labels パラメータでラベルで絞り込みが行えます。
日本語を含むラベル名などは URL エンコードした形で指定しなければいけないので、ここでは curl の "--data-urlencode" オプションを使って labels パラメータを渡しています。

TOKEN={'作成したPersonal access token'}
USER_NAME={'myname'}
REPO_NAME={'myrepo'}
curl  -G --data-urlencode "labels=ラベル1" https://api.github.com/repos/$USER_NAME/$REPO_NAME/issues?state=closed