LoginSignup
3
0

More than 1 year has passed since last update.

github actionsでmainブランチにマージされたタイミングでリリースノート作成・タグ付けを自動化

Last updated at Posted at 2023-02-01

背景

週に一回リリース作業があり、その際のリリースノート作成とタグ付けを手動でやっていた。
この作業を自動化すべくワークフローを作った。

作ったワークフロー

name: Release

on:
  pull_request:
    types: [closed]
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    if: github.event.pull_request.merged == true
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Release
        id: release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.event.pull_request.title }}
          release_name: ${{ github.event.pull_request.title }}
          body: ${{ github.event.pull_request.body }}
          draft: false
          prerelease: false

実行タイミング

on:
  pull_request:
    types: [closed]
    branches:
      - main

こう書くことでmainブランチに対するプルリクがクローズされたタイミングで実行される。
今回はmainブランチにマージされたタイミングで実行させたいので合わせて下記のように条件を記載。

jobs:
  build:
    runs-on: ubuntu-latest
    if: github.event.pull_request.merged == true

他に同じようなことしてる類似記事だとこの条件書いてないことが多かったので気をつけるべし。
mainブランチにマージされたタイミングで実行したい場合は、
PRがクローズされた時、かつPRがマージされた場合というように条件を組み合わせて表現しないと実現できない。

リリースノート作成、タグ付け

steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Release
        id: release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.event.pull_request.title }}
          release_name: ${{ github.event.pull_request.title }}
          body: ${{ github.event.pull_request.body }}
          draft: false
          prerelease: false

タグ名とリリースノートのタイトルはPRタイトルから、
リリースノートのボディ部分はPRのボディから取得させる。

create-releaseの詳細は↓

実際動かすとこんな感じ

PR作ります。
image.png

タイトルにつけたいtag名、ボディにリリースノートに載せたい内容書く
image.png

PRマージしたらワークフローが走り出し
image.png

リリースノートとタグが自動で作られるぞ
image.png

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0