GitHub Actionsでリリースノートを作成しkintoneに登録してみた #GitHubActions - Qiita

こんにちは!かねごん(@hrbk25)です。

今回は、GitHubでPull Request(以下 PR)を、mainブランチにマージしたとき、GitHub Actionsによりリリースノートを作成し、その内容をkintoneアプリへ自動登録する仕組みを検証したので、備忘録としてまとめました!


どんな人向けの記事か

  • GitHub Actionsをまだ触ったことがないけど興味がある方!
  • GitHub Actionsによりkintoneへレコードを登録したい方!

事前準備

kintoneアプリの作成

まず、以下の内容でkintoneのアプリを作成します。

フィールド名 フィールドコード 種別(推奨)
リリースタグ release_tag 文字列(1行)
リリースノート release_note 文字列(複数行)
リリースURL release_url リンク

image.png

リポジトリのシークレットの作成

次に、Github Actionsで使用するシークレットに以下の情報を設定します。
設定の手順は公式ドキュメントを参照しました。

変数名 設定例/説明
KINTONE_BASE_URL https:// subdomain .cybozu.com
KINTONE_API_TOKEN ********************************
KINTONE_APP_ID 123 

image.png

ワークフローの作成

Release Drafterを使ってリリースノートを自動作成するためのファイルと、kintoneのレコードを登録するためのファイルをそれぞれ作成します。
Release Drafterの基本設定は以下の記事を参考にしました。

release-drafter のインストール(って言うのかな?)は簡単で、ドキュメントの Usage にあるワークフロー設定の YAML ファイルをリポジトリの .github/workflows ディレクトリに置き、設定ファイルをドキュメントの Example からコピーしてきます。先の例のリポジトリからコピーしても構いません。

基本的にChat GPTの力を借りて、一旦動かすために、必要なファイルをさくっと作ってみました!

.github/release-drafter.ymlの作成

上記の記事の「Example」を活用しました。

.github/workflows/release-drafter.ymlの作成

main ブランチへPRがマージされたタイミングでリリースノートのドラフトを作成します。

name: Release Drafter

on:
  pull_request:
    types: [closed]    
    branches:
      - main            # 対象ブランチ

permissions:
  contents: write       # リリース下書き作成に必須
  pull-requests: write  # Autolabeler を使う場合に必須

jobs:
  update_release_draft:
    runs-on: ubuntu-latest
    steps:
      - uses: release-drafter/release-drafter@v6
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/publish-release-to-kintone.ymlの作成

リリースを「Publish release」したときに、kintoneにレコードを追加します。

name: Publish release note to kintone

on:
  release:
    types: [published]   # 「Publish release」を押した瞬間だけ発火

jobs:
  post-to-kintone:
    runs-on: ubuntu-latest
    steps:
      - name: Build kintone payload
        id: build
        env:
          BODY: ${{ github.event.release.body }}
        run: |
          # 改行を安全に扱うため base64 → jq で JSON 化
          echo "${BODY}" | base64 -w0 > body.b64
          echo "encoded=$(cat body.b64)" >> "$GITHUB_OUTPUT"

      - name: Send to kintone
        env:
          KINTONE_BASE_URL: ${{ secrets.KINTONE_BASE_URL }}   # 例: https://example.cybozu.com
          KINTONE_API_TOKEN: ${{ secrets.KINTONE_API_TOKEN }} # レコード追加権限付き
          KINTONE_APP_ID: ${{ secrets.KINTONE_APP_ID }}       # 数値 (例: 123)
          TAG_NAME: ${{ github.event.release.tag_name }}
          RELEASE_URL: ${{ github.event.release.html_url }}
          BODY_B64: ${{ steps.build.outputs.encoded }}
        run: |
          jq -nr 
            --arg app "$KINTONE_APP_ID" 
            --arg tag "$TAG_NAME" 
            --arg url "$RELEASE_URL" 
            --arg body "$(echo "$BODY_B64" | base64 -d)" 
            '{
              app: ($app|tonumber),
              record: {
                release_tag:  { value: $tag },
                release_note: { value: $body },
                release_url:  { value: $url }
              }
            }' > payload.json

          curl -sS -X POST 
            -H "X-Cybozu-API-Token: $KINTONE_API_TOKEN" 
            -H "Content-Type: application/json" 
            --data @payload.json 
            "$KINTONE_BASE_URL/k/v1/record.json"

行った作業

  1. main ブランチへPRをマージする。
  2. 「Publish release」ボタンを押下して、リリースノートを作成する。
  3. リリースノートの内容が対象のkintoneアプリのレコードに登録されているか確認する。

詳細

main ブランチへPRをマージして、リリースノートのドラフトが作成されていることを確認します。

image.png

リリースノートの内容に問題が無ければ、「Publish release」ボタンを押下して、リリースノートを作成します。

image.png

Github Actionsにより、リリースノートの内容が、kintoneアプリのレコードに登録されていることを確認します。

image.png

無事にレコードが1件作成されました!!!


まとめ

今回は、「Github Actionsにより、リリースノートを自動でkintoneに登録する」ところまで動かしてみました。
まだまだ試したいことがいっぱいあるので、これからも色々触っていきます!



フラッグシティパートナーズ海外不動産投資セミナー 【DMM FX】入金

Source link