tl;dr
https://github.com/shrkw/sandbox/blob/master/.github/workflows/create_release_tag.yml
このワークフローを実行すると、こんなリリースタグが生成されて便利。
Release Release v0.4.0 · shrkw/sandbox · GitHub
なぜやりたいのか
- 手動でリリースタグを作成しているとバージョンナンバーをたまに間違えたりして面倒
- ローカルでタグを打ってプッシュするやり方もできるけど、ローカルにリモートの最新を取ってくるのも面倒なので、GitHubのWeb UI上で完結させたい
- 今はActionsの手動実行でやるフローにしているけど、mainやreleaseへのコミットで起動させるようにしてもいいと思う
- リリースノートにはコミットではなくプルリクエストを列挙したかった
どうやるか
やるべき要素は以下。
- リリースノートの収集
- 下記に記載
- バージョンダンプ
- リリースタグの作成
できたワークフローは以下。
sandbox/create_release_tag.yml
on: workflow_dispatch: inputs: bumping_part: description: 'major, minor or patch' default: 'minor' required: true
workflow_dispatchがあると Run workflow
のメニューが出てくる。
semverのどのパートを更新するかを選べるようにしていて、github-tag-action
は default_bump
でパートを指定できるので渡している。
yarn run
の結果を全部出してるから余計な箇所もあるので、きれいにしたい場合はsedとかでがんばって。
リリースノート記載内容をどう集めるか
リリースノート、チェンジログを自動で生成したいのでlerna-changelogを使った - Bouldering & Com. に書いた、 @shrkw/lerna-changelog
を使う。
- uses: actions/checkout@v2 with: fetch-depth: 0 # 履歴を全て見たい - name: Install dependencies run: yarn install - name: run lerna-changelog id: run_changelog run: | yarn run lerna-changelog | tee /tmp/changelog.txt changelog=$(cat /tmp/changelog.txt) echo "::set-output name=changelog::${changelog//$'\n'/'%0A'}";
これだと毎回インストールが実行されるのでお好みでキャッシュを利用すると良いです。