備忘録
使ったやつ
やりたいこと
- 特定のブランチからmainへのPRがマージされると勝手にリリースされる。
- リリースタイミングは自分で制御したい。
-
release
ブランチを作って、そのブランチに変更がマージされた時にリリースジョブが実行されるやり方もあるが、自分は全ての変更をmainに集約させたかったので。
- 勝手にタグを打ってくれる。
- タグ名とリリースタイトルは自分で指定できる。
- 前回のタグとの差分をリリースノートに書いてくれる(Auto-generate release notesと同じことができる)。
- メンテされている。
- こういった記事でちょくちょく見かけるcreate-releaseはアーカイブになっているので対象外。
- 成果物をアップロードできる。
スクリプト
create-release.yml
name: create-release
on:
pull_request:
types:
- closed
jobs:
create-release:
name: Create release
runs-on: ubuntu-latest
if: contains(github.head_ref, 'release')
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up JDK
uses: actions/setup-java@v2
with:
java-version: 8
distribution: 'temurin'
cache: 'maven'
- name: Build
run: sh mvnw clean package
- name: Release
uses: softprops/action-gh-release@v1
with:
name: ${{ github.event.pull_request.body }}
tag_name: ${{ github.event.pull_request.title }}
generate_release_notes: true
files: target/hoge.jar
解説
発火タイミング
on:
pull_request:
types:
- closed
PRが閉じたタイミングで発火する。
ちなみに、PRの向き先のブランチの指定はここでできるが、どのブランチからのPRかの指定はできなさそう。
発火するブランチの指定
jobs:
create-release:
name: Create release
runs-on: ubuntu-latest
if: contains(github.head_ref, 'release')
jobにif
で発火条件を指定できる。
今回はブランチ名にrelease
が含まれている場合に発火するように指定した。
action-gh-releaseのオプション
- name: Release
uses: softprops/action-gh-release@v1
with:
name: ${{ github.event.pull_request.body }}
tag_name: ${{ github.event.pull_request.title }}
generate_release_notes: true
files: target/hoge.jar
-
name
: リリースタイトル。今回はPRのbodyを流用した。 -
tag_name
: 作成するタグの名前。今回はPRのタイトルを利用した。PRのタイトルをタグ名にすると、PR一覧を見た時にどれがリリース用のPRかが一目で分かるかなぁと考えたので。 -
generate_release_notes
: Auto-generate release notesをやるかどうか。 - files: アップロードしたいファイル群。改行区切りで複数していできるらしい。
その他はactioin-gh-releaseのREADME参照。
使い方
- ローカルで
release/ver
でブランチを切る - リリース用のファイル変更を行う(READMEの更新や、mavenプロジェクトだと
revision
プロパティの更新) - タイトルを「作成したいタグ名」、内容を「そのリリースでの主な変更点」にして、PRを作成する。
- テストジョブなどが通過を確認してマージする。
- 勝手にリリースされてる。