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