git-pr-releaseが作成したPR一覧にlabelを表示する方法

3 min read

背景

main ブランチに向けて develop ブランチにマージされた PR の一覧を書き添えて作成してくれる GitHub Actions がある。

name: git-pr-release
on:
  push:
    branches:
      - develop
jobs:
  git-pr-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - uses: actions/setup-ruby@v1
        with:
          ruby-version: 3.1
      - run: gem install --no-document git-pr-release
      - run: git-pr-release --squashed
        env:
          GIT_PR_RELEASE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GIT_PR_RELEASE_BRANCH_PRODUCTION: main
          GIT_PR_RELEASE_BRANCH_STAGING: develop
          GIT_PR_RELEASE_TEMPLATE: .github/GIT_PR_RELEASE_TEMPLATE.erb
          TZ: Asia/Tokyo

内部的には git-pr-release を利用している。

git-pr-releaseが作成したPR

デフォルトのテンプレートとしては1、下記のようなものが用意されている。

Release <%= Time.now %>
<% pull_requests.each do |pr| -%>
<%=  pr.to_checklist_item %>
<% end -%>

これを利用すると下記の形式で一覧が作成される。

- [ ] #{PR番号} #{PRタイトル}" + {メンション}

テンプレートの記述を変えて label を表示させる

pull_requestsには、GitHub の Pulls APIの結果が格納されている。

<% pull_requests.each do |pr| -%><% end -%>

labels には配列オブジェクトで label 情報が格納されている。

    "labels": [
      {
        "id": 208045946,
        "node_id": "MDU6TGFiZWwyMDgwNDU5NDY=",
        "url": "https://api.github.com/repos/octocat/Hello-World/labels/bug",
        "name": "bug",
        "description": "Something isn't working",
        "color": "f29513",
        "default": true
      }
    ],

テンプレートにてeachでアクセスしていくとラベルが表示できる。

<% pull_requests.each do |pr| -%>
 <%= pr.to_checklist_item %>
 <% pr.labels.each do |labels| -%>
  <%= labels.name %>
 <% end -%>
<% end -%>

特定のラベルの付いた PR のみ表示させる

documentationというラベルが付いた PR のみ一覧表示させる。

<% pull_requests.each do |pr| -%>
 <% pr.labels.each do |labels| -%>
  <% if labels.name == 'documentation' %>
   <%= pr.to_checklist_item %>, <%= labels.name %>
  <% end %>
 <% end -%>
<% end -%>

documentationラベルが付いたPRのみ表示させた例

注釈

  1. https://github.com/x-motemen/git-pr-release#pr-releasetemplate