13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub Actionsでのリリース自動化にはaction-gh-releaseが便利だったという話

Posted at

備忘録

使ったやつ

actioin-gh-release

やりたいこと

  • 特定のブランチから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参照。

使い方

  1. ローカルでrelease/verでブランチを切る
  2. リリース用のファイル変更を行う(READMEの更新や、mavenプロジェクトだとrevisionプロパティの更新)
  3. タイトルを「作成したいタグ名」、内容を「そのリリースでの主な変更点」にして、PRを作成する。
  4. テストジョブなどが通過を確認してマージする。
  5. 勝手にリリースされてる。

参考文献

13
5
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
13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?