git-pr-releaseには--jsonオプションがあって、これはリリースPRを作り、その情報を標準出力にJSONで出力してくれる。これを利用することでgit-pr-releaseと連携していろんな用途に利用できる。
例えばこれを利用すると、以下のようにリリースPRのサマリー情報をSlackに投稿する、などの事ができる。下のものは適当にPerlのスクリプトを書いてるけど、Pull RequestのAPIから取得された情報がJSONで渡ってくるので、いろんな言語から使えると思う。
use URI; use JSON::XS qw(encode_json decode_json); use List::UtilsBy qw(max_by); use List::Util qw(sum); use LWP::UserAgent; # リリース用PRを作った後、その情報をSlackに投稿する # git-pr-releaseしてjsonでデータを受け取る my $release_json = `git-pr-release --json`; my $data = decode_json($release_json); my $release_pull_request = $data->{release_pull_request}; # リリースPRの情報 my $merged_pull_requests = $data->{merged_pull_requests}; # そのmergeされているPRの情報 # 追加行と削除行の合計が多いPRのタイトルを代表として表示する my $max_merged_pr = max_by { $_->{data}->{additions} + $_->{data}->{deletions}; } @$merged_pull_requests; my $max_merged_pr_title = $max_merged_pr->{data}->{title}; # 追加の合計行数を表示する my $additions = sum map { $_->{data}->{additions} } @$merged_pull_requests; # 削除の合計行数を表示する my $deletions = sum map { $_->{data}->{deletions} } @$merged_pull_requests; my $release_text = sprintf( "【リリース】 %s (%d件, +%d, -%d) %s", $max_merged_pr_title, scalar @$merged_pull_requests, $additions, $deletions, $release_pull_request->{data}->{html_url}, ); my $payload = { username => 'releasekun', text => $release_text, }; my $ua = LWP::UserAgent->new; my $res = $ua->post('https://hooks.slack.com/services/...', { payload => encode_json($payload), });