コンテンツにスキップ

リリース時に関連課題へ通知する

リリースタグの作成をトリガーに、前回タグからのコミットに含まれる課題キーを抽出し、各課題にリリースバージョンをコメントします。あわせて、GitHub Release の本文を Backlog ドキュメントとしても投稿します。

name: Notify Backlog Issues on Release
on:
release:
types: [published]
# actions/checkout が contents: read を必要とするため明示的に指定
permissions:
contents: read
env:
BACKLOG_API_KEY: ${{ secrets.BACKLOG_API_KEY }}
BACKLOG_SPACE: ${{ secrets.BACKLOG_SPACE }}
# ドキュメント投稿先のプロジェクトキー
BACKLOG_PROJECT: MY_PROJECT
# ドキュメントの親フォルダ ID(空の場合はルートに作成)
DOCUMENT_PARENT_ID: ""
jobs:
notify:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
# 前回タグから現在のタグまでのコミットに含まれる課題キーを収集する
- name: Collect issue keys from commits since last tag
id: collect
run: |
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
if [ -n "$PREV_TAG" ]; then
RANGE="${PREV_TAG}..HEAD"
echo "Range: ${PREV_TAG}..HEAD"
else
RANGE="HEAD"
echo "Range: all commits (no previous tag)"
fi
KEYS=$(git log "$RANGE" --oneline | grep -oE '[A-Z_]+-[0-9]+' | sort -u | tr '\n' ' ')
echo "Detected issue keys: ${KEYS:-(none)}"
echo "issue_keys=$KEYS" >> "$GITHUB_OUTPUT"
# 各課題にリリースバージョンをコメントする
- name: Comment release info on each issue
if: steps.collect.outputs.issue_keys != ''
run: |
for KEY in $ISSUE_KEYS; do
echo "Commenting on: $KEY (release $TAG_NAME)"
npx @nulab/bee issue comment "$KEY" \
--body "リリース [$TAG_NAME]($RELEASE_URL) に含まれています" \
|| echo "::warning::Failed to process $KEY"
done
env:
ISSUE_KEYS: ${{ steps.collect.outputs.issue_keys }}
TAG_NAME: ${{ github.event.release.tag_name }}
RELEASE_URL: ${{ github.event.release.html_url }}
# GitHub Release の本文を Backlog ドキュメントとして投稿する
- name: Post release notes to Backlog document
run: |
echo "Creating document: $TAG_NAME"
npx @nulab/bee document create \
--project "$BACKLOG_PROJECT" \
--title "リリースノート $TAG_NAME" \
--body "$RELEASE_BODY" \
--parent-id "$DOCUMENT_PARENT_ID" \
|| echo "::warning::Failed to create release document"
env:
TAG_NAME: ${{ github.event.release.tag_name }}
RELEASE_BODY: ${{ github.event.release.body }}
ドキュメント投稿が不要
「Post release notes to Backlog document」ステップと BACKLOG_PROJECTDOCUMENT_PARENT_ID 環境変数を削除してください。
課題への通知が不要
「Collect issue keys …」と「Comment release info …」の2ステップを削除してください。
ドキュメントを特定のフォルダに入れたい
DOCUMENT_PARENT_ID にフォルダのドキュメント ID を設定してください。