背景
週に一回リリース作業があり、その際のリリースノート作成とタグ付けを手動でやっていた。
この作業を自動化すべくワークフローを作った。
作ったワークフロー
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の詳細は↓