OSS などのプロジェクトに更新を入れたはいいけれどリリースを打つのが面倒なことよくあると思います。そんな私のような面倒くさがりにも嬉しい GitHub Actions に Release Please Action がありますが、この Release Please が作成したリリースにアーティファクト (ビルドしたファイルなど) をアップロードしたいことがあります。使いやすいテンプレートが見つからなかったため備忘録として書き残します。
リリースフロー
- 変更を
main (master)
にコミットする - Release Please がバージョンを上げる PR を作ってくれる (
release-please
job)- 続けて変更をいれるたびに PR を更新してくれる
- コミットメッセージの詳細行に
Release-As: x.x.x
を記述するとバージョンを指定できる- empty commit とかでやると便利
-
CHANGELOG
やversion.txt
があったら勝手に更新してくれる
- PR をマージする
- Release Please がタグとリリースを作成してくれる (
release-please
job) - Actions でビルドしてアップロードする (
upload-artifact
job)
この Action はモノレポなど複数のバージョンのパッケージを管理する場合には使用できません。tag_name
を使用している箇所を適宜置き換えてください。
設定ファイル
release-please
job でリリース / PR を作成し、リリースが作成された場合 upload-artifact
job でビルド・アーティファクトのアップロードを行います。
on:
push:
branches:
- main
- master
permissions:
contents: write
pull-requests: write
name: release
jobs:
release-please:
runs-on: ubuntu-latest
timeout-minutes: 1
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
steps:
- id: release
uses: googleapis/release-please-action@v4
with:
release-type: simple
upload-artifact:
runs-on: ubuntu-latest
needs: release-please
if: ${{ needs.release-please.outputs.release_created }}
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: leafo/gh-actions-lua@v10
with:
lua-version: 5.4
- name: Build
run: make build
- name: Upload Artifact
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ needs.release-please.outputs.tag_name }} fil1 file2 ...