GitHub Actionsでリリースノートを自動生成・バイナリのアップロード

2024/09/07に公開

TL;DR

下記の yml で可能

name: Release
on:
  push:
    tags:
      - "v[0-9]+.[0-9]+.[0-9]+"
jobs:
  release:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    env:
      VERSION: ${{ github.ref_name }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          go-version: "1.22"
      - run: |
          go build -o "${RUNNER_TEMP}/main" main.go
      - run: |
          gh release create "${VERSION}" --title "${VERSION} のリリースノート" --generate-notes
          gh release upload "${VERSION}" "${RUNNER_TEMP}/main"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

解説

セマンティックバージョンに沿ったバージョンの tag の push を元に Action を実行します。

on:
  push:
    tags:
      - "v[0-9]+.[0-9]+.[0-9]+"

リリースノートを作成するための権限を付与します。

permissions:
  contents: write

設定された tag の情報を取得します。

env:
  VERSION: ${{ github.ref_name }}

アップロードするバイナリ作成のため Go 言語の環境をセットアップしてビルドします。

- uses: actions/checkout@v4
- uses: actions/setup-go@v5
  with:
    go-version: "1.22"
- run: |
    go build -o "${RUNNER_TEMP}/main" main.go

リリースノートを自動作成し、ビルドしたバイナリを upload します。
GitHub のトークンも必要なので取得しています。

- run: |
    gh release create "${VERSION}" --title "${VERSION} のリリースノート" --generate-notes
    gh release upload "${VERSION}" "${RUNNER_TEMP}/main"
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GitHubで編集を提案

Discussion