おそらくはそれさえも平凡な日々

immutable releasesを有効にする際のtagprとgoreleaserの設定

GitHubのImmutable Releasesがパブリックプレビューとなりました。ソフトウェアを公開している方は積極的にオンにすると良いでしょう。suzuki-shunsukeさんが早速zennを書かれているので、詳しい解説はそちらに譲ります。

ここでは、Go製のソフトウェアで実行ファイルもリリースされている方の中には、tagprgoreleaserを組み合わせて使っている方がそれなりにいると思うので、その場合の設定についてお知らせします。

Draftリリースを作り、それを再利用する

これだけです。具体的には以下です。

  • .tagprrelease = draft 設定を追加する
  • .goreleaser.ymlrelease.use_existing_draft: true 設定を追加する

例を以下に示します。

# .tagpr
[tagpr]
    release = draft
# .goreleaser.yml
release:
  use_existing_draft: true

これは、具体的にはtagprが作成するGitHub ReleaseをDraftとして作成し、goreleaserにそのDraft Releaseを再利用させています。

release = draft の設定がないと、tagprが作ったリリースをその後変更できずファイルをアップロードできなくなりますし、 use_existing_draft: true 設定がないと、goreleaserは別でリリースを作ってしまいます。

ということで、tagprgoreleaserの組み合わせは、すでに、immutable releasers readyになっているので、是非設定を有効にしてみて下さい。

余談

tagpr 地味ながら社会的責任を伴うツールになってきているのを感じているので、これを機にGitHub Actions周りの設定を見直しました。もう少し調整予定です。また、観念してcommit hashでpinするようにもしました。pinact 便利。ちゃんとメンテナンスしていきます。

実行ファイルのリリースについては、個人的には自分がメンテナンスしている ghrを使うことが多く、これは設定なしでドラフトリリースを見つけて再利用してくれる機能を入れており、もともとドラフトリリースを作ってから、ファイルアップロード後に公開するワークフローにしていたので設定変更も必要なかった。

ただ、 ghr 自体のメンテナンスはそこまで活発にしているわけではないので、そこまで薦められる状態にはなっていないと思います。

haya14busaさんが、最近 trusted-go-releaser を含めた、サプライチェーン周りのツールチェインを整えている雰囲気を感じるので期待しています!

created at
last modified at

2025-09-05T16:07:06+0900

comments powered by Disqus