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 を利用している。
デフォルトのテンプレートとしては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 -%>